Пример #1
0
    def onMediaMessage(self, messageProtocolEntity):
        if messageProtocolEntity.getMediaType() == "image":

            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())

            outImage = ImageDownloadableMediaMessageProtocolEntity(
                messageProtocolEntity.getMimeType(),
                messageProtocolEntity.fileHash,
                messageProtocolEntity.url,
                messageProtocolEntity.ip,
                messageProtocolEntity.size,
                messageProtocolEntity.fileName,
                messageProtocolEntity.encoding,
                messageProtocolEntity.width,
                messageProtocolEntity.height,
                messageProtocolEntity.getCaption(),
                to=messageProtocolEntity.getFrom(),
                preview=messageProtocolEntity.getPreview())

            print("Echoing image %s to %s" %
                  (messageProtocolEntity.url,
                   messageProtocolEntity.getFrom(False)))

            #send receipt otherwise we keep receiving the same message over and over
            self.toLower(receipt)
            self.toLower(outImage)
Пример #2
0
    def onMediaMessage(self, messageProtocolEntity):
        if messageProtocolEntity.getMediaType() == "image":
            
            receipt = OutgoingReceiptProtocolEntity(messageProtocolEntity.getId(), messageProtocolEntity.getFrom())

            outImage = ImageDownloadableMediaMessageProtocolEntity(
                messageProtocolEntity.getMimeType(), messageProtocolEntity.fileHash, messageProtocolEntity.url, messageProtocolEntity.ip,
                messageProtocolEntity.size, messageProtocolEntity.fileName, messageProtocolEntity.encoding, messageProtocolEntity.width, messageProtocolEntity.height,
                messageProtocolEntity.getCaption(),
                to = messageProtocolEntity.getFrom(), preview = messageProtocolEntity.getPreview())

            print("Echoing image %s to %s" % (messageProtocolEntity.url, messageProtocolEntity.getFrom(False)))

            #send receipt otherwise we keep receiving the same message over and over
            self.toLower(receipt)
            self.toLower(outImage)

        elif messageProtocolEntity.getMediaType() == "location":

            receipt = OutgoingReceiptProtocolEntity(messageProtocolEntity.getId(), messageProtocolEntity.getFrom())

            outLocation = LocationMediaMessageProtocolEntity(messageProtocolEntity.getLatitude(),
                messageProtocolEntity.getLongitude(), messageProtocolEntity.getLocationName(),
                messageProtocolEntity.getLocationURL(), messageProtocolEntity.encoding,
                to = messageProtocolEntity.getFrom(), preview=messageProtocolEntity.getPreview())

            print("Echoing location (%s, %s) to %s" % (messageProtocolEntity.getLatitude(), messageProtocolEntity.getLongitude(), messageProtocolEntity.getFrom(False)))

            #send receipt otherwise we keep receiving the same message over and over
            self.toLower(outLocation)
            self.toLower(receipt)
        elif messageProtocolEntity.getMediaType() == "vcard":
            receipt = OutgoingReceiptProtocolEntity(messageProtocolEntity.getId(), messageProtocolEntity.getFrom())
            outVcard = VCardMediaMessageProtocolEntity(messageProtocolEntity.getName(),messageProtocolEntity.getCardData(),to = messageProtocolEntity.getFrom())
            print("Echoing vcard (%s, %s) to %s" % (messageProtocolEntity.getName(), messageProtocolEntity.getCardData(), messageProtocolEntity.getFrom(False)))
            #send receipt otherwise we keep receiving the same message over and over
            self.toLower(outVcard)
            self.toLower(receipt)
Пример #3
0
    def image_send(self, number, imageLabel):
        if self.connected:
            username = self.getStack().getProp(
                YowAuthenticationProtocolLayer.PROP_CREDENTIALS)[0]

            cnx = mysql.connector.connect(user='******',
                                          password='',
                                          database='zapserver')
            cursor = cnx.cursor()

            cursor.execute(
                "select mimeType, fileHash, url, ip, size, fileName, encoding, width, height, preview "
                "from Image where label = %s and jidServidor = %s LIMIT 1",
                [imageLabel, username])

            for (row0, row1, row2, row3, row4, row5, row6, row7, row8,
                 row9) in cursor:
                outImage = ImageDownloadableMediaMessageProtocolEntity(
                    str(row0),
                    str(row1),
                    str(row2),
                    str(row3),
                    int(row4),
                    str(row5),
                    str(row6),
                    int(row7),
                    int(row8),
                    "",
                    to=number,
                    preview=str(row9))

                self.toLower(outImage)

                print("Send ImageLabel to %s" % number)

            cursor.close()
Пример #4
0
    def onMedia(self, mediaProtocolEntity):
        if mediaProtocolEntity.getMediaType() == "image":
            receipt = OutgoingReceiptProtocolEntity(
                mediaProtocolEntity.getId(), mediaProtocolEntity.getFrom())

            self.toLower(receipt)

            outImage = ImageDownloadableMediaMessageProtocolEntity(
                mediaProtocolEntity.getMimeType(),
                mediaProtocolEntity.fileHash,
                mediaProtocolEntity.url,
                mediaProtocolEntity.ip,
                mediaProtocolEntity.size,
                mediaProtocolEntity.fileName,
                mediaProtocolEntity.encoding,
                mediaProtocolEntity.width,
                mediaProtocolEntity.height,
                #mediaProtocolEntity.getCaption(),
                "Only text messages ok!!",
                to=mediaProtocolEntity.getFrom(),
                preview=mediaProtocolEntity.getPreview())

            #print("Echoing Image from %s" % mediaProtocolEntity.getFrom(False))
            #print("MimeType: %s" % mediaProtocolEntity.getMimeType())
            #print("FileHash: %s" % mediaProtocolEntity.fileHash)
            #print("url: %s" % mediaProtocolEntity.url)
            #print("ip: %s" % mediaProtocolEntity.ip)
            #print("size: %s" % mediaProtocolEntity.size)
            #print("FileName: %s" % mediaProtocolEntity.fileName)
            #print("encoding: %s" % mediaProtocolEntity.encoding)
            #print("width: %s" % mediaProtocolEntity.width)
            #print("height: %s" % mediaProtocolEntity.height)
            #print("Caption: %s" % str(mediaProtocolEntity.getCaption()))
            #print("Preview: %s" % mediaProtocolEntity.getPreview().encode("UTF-8"))

            #registrar mensagem recebida no BD
            username = self.getStack().getProp(
                YowAuthenticationProtocolLayer.PROP_CREDENTIALS)[0]
            jid = mediaProtocolEntity.getFrom()

            cnx = mysql.connector.connect(user='******',
                                          password='',
                                          database='zapserver')

            cursor = cnx.cursor()
            cursor.execute(
                "insert into Image(jidServer, label, mimeType, fileHash, fileName, url, "
                " ip, size, encoding, width, height, preview) "
                "values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s, %s, %s)", [
                    username,
                    str(mediaProtocolEntity.getCaption()),
                    mediaProtocolEntity.getMimeType(),
                    mediaProtocolEntity.fileHash, mediaProtocolEntity.fileName,
                    mediaProtocolEntity.url, mediaProtocolEntity.ip,
                    mediaProtocolEntity.size, mediaProtocolEntity.encoding,
                    mediaProtocolEntity.width, mediaProtocolEntity.height,
                    mediaProtocolEntity.getPreview().encode("UTF-8")
                ])

            cnx.commit()

            cursor.close()
            cnx.close()

            f = open(username + ".log", 'a')
            f.write(
                jid.split('@')[0] + ": Image " +
                str(mediaProtocolEntity.getCaption()) + " (" +
                str(datetime.datetime.now()) + ")\n")
            f.close()

            self.toLower(outImage)
Пример #5
0
    def onMediaMessage(self, messageProtocolEntity):
        global lastSentId
        if messageProtocolEntity.getMediaType() == "image":

            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())

            outImage = ImageDownloadableMediaMessageProtocolEntity(
                messageProtocolEntity.getMimeType(),
                messageProtocolEntity.fileHash,
                messageProtocolEntity.url,
                messageProtocolEntity.ip,
                messageProtocolEntity.size,
                messageProtocolEntity.fileName,
                messageProtocolEntity.encoding,
                messageProtocolEntity.width,
                messageProtocolEntity.height,
                messageProtocolEntity.getCaption(),
                to=messageProtocolEntity.getFrom(),
                preview=messageProtocolEntity.getPreview())

            print("Echoing image %s to %s" %
                  (messageProtocolEntity.url,
                   messageProtocolEntity.getFrom(False)))

            #send receipt otherwise we keep receiving the same message over and over
            self.toLower(receipt)
            self.toLower(outImage)

        elif messageProtocolEntity.getMediaType() == "location":

            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())

            outLocation = LocationMediaMessageProtocolEntity(
                messageProtocolEntity.getLatitude(),
                messageProtocolEntity.getLongitude(),
                messageProtocolEntity.getLocationName(),
                messageProtocolEntity.getLocationURL(),
                messageProtocolEntity.encoding,
                to=messageProtocolEntity.getFrom(),
                preview=messageProtocolEntity.getPreview())

            print("Echoing location (%s, %s) to %s" %
                  (messageProtocolEntity.getLatitude(),
                   messageProtocolEntity.getLongitude(),
                   messageProtocolEntity.getFrom(False)))

            #send receipt otherwise we keep receiving the same message over and over
            self.toLower(outLocation)
            self.toLower(receipt)

        elif messageProtocolEntity.getMediaType() == "vcard":
            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())
            self.toLower(receipt)
            x = messageProtocolEntity.getCardData()
            received_vcard_number = x.split('TEL:')[1].split("\n")[0]

            #inserting in DB
            linkerObject = linker()
            whatsapp_id = messageProtocolEntity.getFrom(False)
            message_sender = linkerObject.returnEkoId(whatsapp_id, 0)
            message_body = received_vcard_number
            message_source = linkerObject.returnMessageSource()
            message_type = linkerObject.returnMessageType(2)
            message_status = linkerObject.returnMessageStatus()
            message_destination = message_source
            dbUpdateObject = dbUpdate()
            dbUpdateObject.insertReceiveMessage(message_sender, message_body,
                                                message_source, message_type,
                                                message_status)

            print("Receiving %s from %s" %
                  (message_body, messageProtocolEntity.getFrom(False)))

            self.toLower(receipt)

            time.sleep(2)
            #to pick only unprocessed message

            replyToBeSent = dbUpdateObject.selectResponseMessage(
                message_destination, lastSentId)
            self.replyBack(messageProtocolEntity, replyToBeSent)

        elif messageProtocolEntity.getMediaType() == "audio":

            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())
            self.toLower(receipt)
            outAudio = AudioDownloadableMediaMessageProtocolEntity(
                messageProtocolEntity.getMimeType(),
                messageProtocolEntity.fileHash,
                messageProtocolEntity.url,
                messageProtocolEntity.ip,
                messageProtocolEntity.size,
                messageProtocolEntity.fileName,
                messageProtocolEntity.abitrate,
                messageProtocolEntity.acodec,
                messageProtocolEntity.asampfreq,
                messageProtocolEntity.duration,
                messageProtocolEntity.encoding,
                messageProtocolEntity.origin,
                messageProtocolEntity.seconds,
                to=messageProtocolEntity.getFrom())

            path = str(messageProtocolEntity.url)
            commands.getoutput('wget ' + path)
            fname = path.split('/')[-1]
            commands.getoutput('ffmpeg -i ' + fname + ' ' +
                               fname.split('.')[0] + '.wav')
            r = sr.Recognizer()
            with sr.WavFile(
                    fname.split('.')[0] +
                    '.wav') as source:  # use "test.wav" as the audio source
                audio = r.record(source)  # extract audio data from the file
            try:
                print("Receiving sound. Transcription: " + r.recognize(audio)
                      )  # recognize speech using Google Speech Recognition
            except LookupError:  # speech is unintelligible
                print("Could not understand audio")
                return
                #inserting in DB
                whatsapp_id = messageProtocolEntity.getFrom(False)
                message_sender = linker.returnEkoId(whatsapp_id, 0)
                message_body = r.recognize(audio)
                message_source = linker.returnmessageSource()
                message_type = linker.returnmessageType(2)
                message_status = linker.returnmessagestatus()
                message_destination = message_source
                dbUpdateObject = dbUpdate()
                dbUpdateObject.insertReceiveMessage(message_sender,
                                                    message_body,
                                                    message_source,
                                                    message_type,
                                                    message_status)
                print(
                    "Receiving %s from %s" %
                    (r.recognize(audio), messageProtocolEntity.getFrom(False)))

                self.toLower(receipt)

                time.sleep(2)
                #to pick only unprocessed message

                replyToBeSent = dbUpdateObject.selectResponseMessage(
                    message_destination, self.lastSentId)
                self.replyBack(messageProtocolEntity, replyToBeSent)
Пример #6
0
    def onMediaMessage(self, messageProtocolEntity):
        if messageProtocolEntity.getMediaType() == "image":

            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())

            outImage = ImageDownloadableMediaMessageProtocolEntity(
                messageProtocolEntity.getMimeType(),
                messageProtocolEntity.fileHash,
                messageProtocolEntity.url,
                messageProtocolEntity.ip,
                messageProtocolEntity.size,
                messageProtocolEntity.fileName,
                messageProtocolEntity.encoding,
                messageProtocolEntity.width,
                messageProtocolEntity.height,
                messageProtocolEntity.getCaption(),
                to=messageProtocolEntity.getFrom(),
                preview=messageProtocolEntity.getPreview())

            print("image %s [%s]:%s" %
                  (messageProtocolEntity.getFrom(False),
                   datetime.datetime.fromtimestamp(
                       messageProtocolEntity.getTimestamp()).strftime(
                           '%d-%m-%Y %H:%M'), messageProtocolEntity.url))

        elif messageProtocolEntity.getMediaType() == "location":

            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())

            outLocation = LocationMediaMessageProtocolEntity(
                messageProtocolEntity.getLatitude(),
                messageProtocolEntity.getLongitude(),
                messageProtocolEntity.getLocationName(),
                messageProtocolEntity.getLocationURL(),
                messageProtocolEntity.encoding,
                to=messageProtocolEntity.getFrom(),
                preview=messageProtocolEntity.getPreview())

            print("location %s [%s]:(%s, %s)" %
                  (messageProtocolEntity.getFrom(False),
                   datetime.datetime.fromtimestamp(
                       messageProtocolEntity.getTimestamp()).strftime(
                           '%d-%m-%Y %H:%M'),
                   messageProtocolEntity.getLatitude(),
                   messageProtocolEntity.getLongitude()))

        elif messageProtocolEntity.getMediaType() == "vcard":
            receipt = OutgoingReceiptProtocolEntity(
                messageProtocolEntity.getId(), messageProtocolEntity.getFrom())
            outVcard = VCardMediaMessageProtocolEntity(
                messageProtocolEntity.getName(),
                messageProtocolEntity.getCardData(),
                to=messageProtocolEntity.getFrom())
            print("vcard %s [%s]:(%s, %s)" %
                  (messageProtocolEntity.getFrom(False),
                   datetime.datetime.fromtimestamp(
                       messageProtocolEntity.getTimestamp()).strftime(
                           '%d-%m-%Y %H:%M'), messageProtocolEntity.getName(),
                   messageProtocolEntity.getCardData()))

        outgoingMessageProtocolEntity = OutgoingReceiptProtocolEntity(
            messageProtocolEntity.getId(), messageProtocolEntity.getFrom())
        self.toLower(receipt)
        print("Sent delivered receipt Message %s" %
              messageProtocolEntity.getId())