Beispiel #1
0
def trataPOST(content):

    # webhooks aqui

    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
            msg, arquivo = logica(mensagem, usermail)

            # Envia resposta na sala apropriada
            webexmsgRoomviaID(sala, msg, arquivo)

    except:
        print("POST nao reconhecido")
        pass
Beispiel #2
0
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")