Você está na página 1de 4

__credits__ = ["Gean Kelyson"]

'''
CONSULTA CLIENTE POR CPF - R15
Script alternativo, onde o funcionamento da seleção do contrato por IDx e ID
contrato
Manutenção funcionando em ambos, Cliente com um ou mais contrato...
'''
# Entrada de dados do SGP
token = 'TOKEN_DO_SGP'
app = 'webchat'

# Url do sgp sem a última '/'


url_base='https://PROVEDORX.sgp.net.br'

#Não alterar
url = f'{url_base}/api/ura/consultacliente/'
url_manutencao = f'{url_base}/api/ura/verificaacesso/'

headers = {}

# Selecionar opção na entrada do menu


selected_option = customer.message.selected_option or
str(customer.message.content.strip())
if customer.data.get('select_options'):
# Tentar converter a mensagem do usuário para um índice de opção de contrato
try:
selected_idx = int(selected_option) - 1
except ValueError as e:
print(e)
selected_idx = -1

# Verificar se o índice é válido


if 0 <= selected_idx < len(customer.data.get('select_options')):
contrato_selecionado = customer.data.get('select_options')[selected_idx]
customer.save()
# Verificar se a mensagem é uma opção de contrato válida
elif selected_option in customer.data.get('select_options'):
contrato_selecionado = selected_option
else:
contrato_selecionado = None
if contrato_selecionado:
customer.data.pop('select_options',None)
customer.data['contrato_id'] = contrato_selecionado.split(' ')[0]
customer.save()
customer.response['redirect_menu'] = True
try:
req = {'app': app, 'token': token, 'contrato':
customer.data['contrato_id']}
response = requests.post(url_manutencao, data=req).json()
if response['status'] == 9:
customer.sendTextMessage(response['msg'])
except:
pass
# Atraso de 15 segundos antes de enviar a mensagem de seleção de contrato
# Ativar quando tiver em manutenção, assim a mensagem fica mais tempo
#time.sleep(15)

elif customer.message.content and customer.message.content.strip() in


customer.data.get('select_options'):
customer.data.pop('select_options',None)
customer.data['contrato_id'] = str(customer.message.content.strip())
customer.save()
customer.response['redirect_menu'] = True
try:
req = {'app': app, 'token': token, 'contrato':
customer.data['contrato_id']}
response = requests.post(url_manutencao, data=req).json()
if response['status'] == 9:
customer.sendTextMessage(response['msg'])
except:
pass
else:
customer.sendTextMessage("Opção inválida, digite um dos contratos
informados acima")
customer.response['invalid_option'] = True
else:

msg = '''O CPF ou CNPJ informado é invalido. Por favor, tente digitar somente
os números do seu CPF ou CNPJ.\n\n_ou digite *#* a qualquer momento para 🚨
Encerrar_'''

encontrado = 'Seja bem vindo ao nosso atendimento virtual\n\n*%


(cliente_nome)s*\n\nObrigado pela confirmação.\n'

cpfcnpj = fnum(customer.message.content or '')

req = {'cpfcnpj': cpfcnpj, 'token': token, 'app': app}

r =
requests.post(url,headers=headers,data=req,allow_redirects=True,verify=False)
print('Status',r.status_code)

if r.status_code == 200:
response = r.json()
if response.get('contratos') and len(response.get('contratos')) >= 1:

customer.data = {
**customer.data,
'cliente_nome': response['contratos'][0].get('razaoSocial'),
'cliente_id': response['contratos'][0].get('clienteId'),
'contrato_id': response['contratos'][0].get('contratoId'),
'cpfcnpj': response['contratos'][0].get('cpfCnpj'),
'contratos': [],
'webchatTags': []
}

'''
Aqui é possível adicionar os dados do atendimento utilizando %
(<nome_do_campo>)s
Exemplo:
customer.data = {
'cliente_nome': 'Nome do cliente',
'contrato_id': 5,
}
msg = "Olá %(cliente_nome)s, deseja atendimento para o contrato %
(contrato_id)s?"
Certifiquese que o dado existe antes de utilizar. Do contratio o script
não executará
'''

for cc in response.get('telefones_cargos', []):


c_numero = fnum(cc.contato)
c_numero_len = len(c_numero)
if c_numero == fnum(customer.contact_numer)[0-c_numero_len:]:
customer.data['webchatTags'].append(
{
"texto": cc.get('cargo') or cc.get('nome') or c_numero,
"style":{
"background": "#28a745",
"color": "#fff",
}
}
)

if not customer.data['webchatTags']:
customer.data['webchatTags'].append({
"texto": 'Não Identificado',
"style":{
"background": "#dc3545",
"color": "#fff",
}
})

customer.data['webchatTags'].append({
"texto": req['cpfcnpj'],
"style":{
"background": "#17a2b8",
"color": "#fff",
}
})

for cc in response.get('contratos',[]):
customer.data['contratos'].append(str(cc.get('contratoId')))

if len(response.get('contratos')) == 1:
customer.data['contrato_id'] = response['contratos']
[0].get('contratoId')
msg = encontrado %customer.data
customer.response['redirect_menu'] = True
try:
req = {'app': app, 'token': token, 'contrato':
customer.data['contrato_id']}
response = requests.post(url_manutencao, data=req).json()
if response['status'] == 9:
customer.sendTextMessage(response['msg'])
except:
pass
elif len(response['contratos']) > 1:
customer.sendTextMessage(f"Seja bem vindo ao nosso atendimento
virtual\n\n{customer.data.get('cliente_nome', 'cliente')}\n\nObrigado pela
confirmação.")
customer.data['select_options'] = customer.data['contratos']

msg = '''\n*%(cliente_nome)s*\n\nIdentifiquei em seu nome mais de


um contrato ativo. Por favor digite o número do contrato que deseja atendimento:\
n'''
msg = msg % customer.data

for idx, c in enumerate(response.get('contratos')):


msg += "\n\nDigite *%s* - Contrato: %s" % (idx +1,
c.get('contratoId'))
msg += "\n%s" %c.get('endereco_logradouro')
msg += ", %s" %c.get('endereco_numero')
msg += " - %s" %c.get('endereco_bairro')
msg += ", %s" %c.get('endereco_cidade')
msg += " / %s" %c.get('endereco_uf')

customer.save()
else:
customer.response['invalid_option'] = True
else:
customer.response['invalid_option'] = True
customer.sendTextMessage(msg)

Você também pode gostar