def trataPOST(content): # resposta as perguntas via webexteams # trata mensagem quando nao e' gerada pelo bot. Se nao e' bot, entao usuario try: if content['name']==webhook_name and content['data']['personEmail']!=botmail: # identifica id da mensagem msg_id=(content['data']['id']) # identifica dados da mensagem webextalk=getwebexMsg(msg_id) usermail=webextalk[2] mensagem=webextalk[0] sala=webextalk[1] # executa a logica msg,arquivo=logica(mensagem,usermail) # Envia resposta na sala apropriada webexmsgRoomviaID(sala,msg,arquivo) except: print("POST nao reconhecido") pass
def trataPOST(content): # HTTP POST Functions # Deals with POST # Webhook from user or # Alarms generated by other modules # webhooks aqui # Webex Webhooks ###### try: # resposta as perguntas via webexteams # trata mensagem quando nao e' gerada pelo bot. Se nao e' bot, entao usuario # # Dois tipos de webhook podem chegar: texto escrito pelo usuario webhook tipo 1 # ou inputs relacionado a um card preenchido pelo user, webhook tipo 2 # Trata Webhook tipo mensagem # # Webhook tipo 1 # Recebe msg, identifica quem escreveu e em que sala # Em seguida executa a logica # O retorno da logica (msg) é enviada para usuário na sala solicitada if content['name']==whn and content['data']['personEmail']!=bot: # identifica id da mensagem msg_id=(content['data']['id']) # identifica dados da mensagem mensagem,sala,usermail=getwebexMsg(msg_id) #print (mensagem,sala,usermail) # executa a logica try: msg,arquivo=logica(mensagem,usermail,sala) except: print ("Erro de logica.") # Envia resposta na sala apropriada webexmsgRoomviaID(sala,msg,arquivo) # Webhook tipo 2 - Dados de Card # Recebe msg, identifica quem escreveu e em que sala # Identifica qual o tipo de função (se veio do menu ou de uma função especifica) # Em seguida executa a logica # O retorno da logica (msg) é enviada para usuário na sala solicitada # Trata Webhook tipo Card if content['name']==f"{whn}-card": # identifica id da mensagem msg_id=(content['data']['id']) # identifica dados enviados pelo Card conteudo=getCardInputs(msg_id) #print(conteudo) # identifica pessoa e sala que inputou no card pessoa,sala=getCardInfo(msg_id) # usermail não vem no webhook, precisa resgatar. usermail="" #print(pessoa,sala) # identifica qual o tipo de form de origem if conteudo['form']=="menu": # Solicitação veio do menu option=int(conteudo['escolhas']) # Envia o card para user conforme codigo escolhido no menu logica(f"showcard:{option}",usermail,sala) if conteudo['form']=="function": # Solicitação veio de uma opção especifica option=int(conteudo['option']) parametros=conteudo['parametros'] # monta lista de parametros, casos existam lista_parametros=list() if parametros>0: z=0 while z<parametros: item=f"parametro{z}" par=conteudo[item] lista_parametros.append(par) z+=1 # executa conforme o codigo escolhido no menu # executa a logica try: msg,arquivo=executa(usermail,option,lista_parametros) except: print ("Erro de logica.") # Envia resposta na sala apropriada webexmsgRoomviaID(sala,msg,arquivo) else: print ("Inputs de cards desconhecidos.") except: print ("Não é webhook esperado") # Alarms sent via POST ############################### # alarmes aqui # código para tratar alarmes # formato do alarme esperado: #{"alarm": "<identificador>", #"data": { # "type": "00", # "message": "Mensagem para o user", # "who": "lista de pessoas para avisar" # "image": "endereço da imagem" #}} # defina aqui seu identificador identificador="alarme1" # valida se POST é do tipo alarme esperado try: if content['alarm']==identificador: imagem="" # texto que veio do alarme try: txt_alarm=content['data']['message'] except: print ("Nenhuma mensagem identificada") # lista de pessoas (emails) separados por virgulas try: pessoas=list(content['data']['who'].split(',')) except: print ('Nenhum destinatario identificado') pessoas=() # tenta identificar imagem (opcional) try: imagem=content['data']['image'] except: print ('Imagem não identificada') imagem="None" # tipo de alarme # 00 = mensagem para individuo(s), 01 = mensagem para admin(s) tipo_alarme=content['data']['type'] print (f'msg={txt_alarm} avisar={pessoas} imagem={imagem}') if tipo_alarme=="00": # Alarme para individuos # pessoas pode conter um email ou uma lista de emails try: for b in pessoas: webexmsgUser(b,txt_alarm) except: print ("Envio individual falhou") elif tipo_alarme=="01": # Alarme do tipo aviso para admin # Envia nota para Sala dos Admins/Facility manager try: sala=getwebexRoomID(admins_room) webexmsgRoomviaID(sala,txt_alarm,imagem) except: print("Falha para enviar msg ao grupo admin") else: print ('Nenhum cod de alarme conhecido') except: print ("não é alarme esperado")
def trataPOST(content): # HTTP POST Functions # Deals with POST # Webhook from user or # Alarms generated by other modules # webhooks aqui # Webex Webhooks ###### try: # resposta as perguntas via webexteams # trata mensagem quando nao e' gerada pelo bot. Se nao e' bot, entao usuario if content['name']==webhook_name and content['data']['personEmail']!=botmail: # identifica id da mensagem msg_id=(content['data']['id']) # identifica dados da mensagem mensagem,sala,usermail=getwebexMsg(msg_id) #usermail=webextalk[2] #mensagem=webextalk[0] #sala=webextalk[1] # executa a logica try: msg,arquivo=logica(mensagem,usermail) except: print ("Erro de logica.") # Envia resposta na sala apropriada webexmsgRoomviaID(sala,msg,arquivo) except: print ("não é webhook esperado") # Alarms sent via POST ############################### # alarmes aqui # código para tratar alarmes # formato do alarme esperado: #{"alarm": "distance-bot", #"data": { # "type": "00", # "message": "Mensagem para o user", # "who": "lista de pessoas para avisar" # "image": "endereço da imagem" #}} # valida se POST é do tipo alarme esperado try: if content['alarm']=="distance-bot": imagem="" # texto que veio do alarme try: txt_alarm=content['data']['message'] except: print ("Nenhuma mensagem identificada") # lista de pessoas (emails) separados por virgulas try: pessoas=list(content['data']['who'].split(',')) except: print ('Nenhum destinatario identificado') pessoas=() # tenta identificar imagem (opcional) try: imagem=content['data']['image'] except: print ('Imagem não identificada') imagem="None" # tipo de alarme # 00 = mensagem para individuo(s), 01 = mensagem para admin(s) tipo_alarme=content['data']['type'] print (f'msg={txt_alarm} avisar={pessoas} imagem={imagem}') if tipo_alarme=="00": # Alarme para individuos # pessoas pode conter um email ou uma lista de emails try: for b in pessoas: webexmsgUser(b,txt_alarm) except: print ("Envio individual falhou") elif tipo_alarme=="01": # Alarme do tipo aviso para admin # Envia nota para Sala dos Admins/Facility manager try: sala=getwebexRoomID(admins_room) webexmsgRoomviaID(sala,txt_alarm,imagem) except: print("Falha para enviar msg ao grupo admin") else: print ('Nenhum cod de alarme conhecido') except: print ("não é alarme esperado")