Как получать сообщения WhatsApp с помощью python и webhook

Введение

В этом уроке мы создадим простое приложение для обработки входящих сообщений WhatsApp с использованием Python.

Зависимости

установить нгрок

для целей локальной разработки требуется служба туннелирования. В этом примере используется ngrok. Вы можете скачать ngrok отсюда .

установить колбу

pip install flask

нам нужно развернуть сервер с помощью фреймворка FLASK.
FLASK позволяет удобно отвечать на входящие запросы и обрабатывать их.

Шаг 1: Создайте новое фляжное приложение

Мы создадим файл: app.py и пишем в нем следующий код

from flask import Flask, request, jsonify
from test import Ultrawebhook
import json

app = Flask(__name__)

@app.route('/', methods=['POST'])
def home():
    if request.method == 'POST':
        bot = Ultrawebhook(request.json)
        return bot.processing()

if(__name__) == '__main__':
    app.run()

Шаг 2: Обработка входящего сообщения

Мы создадим файл: test.py и пишем в нем следующий код

import json
import requests


class Ultrawebhook():    
    def __init__(self, json):
        self.json = json
        self.dict_messages = json['data']


    def processing(self):
        if self.dict_messages != []:
            message = self.dict_messages
            msg_from = message['from'].split()
            msg_text = message['body'].split()
            print("sender phone number : " + msg_from[0])
            print("message : " + msg_text[0])
            return ''

Шаг 3: Запустите проект

Стартовая колба:

flask run

Начать нгрок

Для Windows:

ngrok http 80

Для Mac:

./ngrok http 5000

После этого вы должны увидеть, например:

https://7647-115-83-121-164.ngrok.io

вставьте свой URL-адрес в настройки экземпляра, как показано на следующем рисунке.

Получайте сообщения WhatsApp, используя python и webhook-ultramsg

ПРИМЕР ОТВЕТА В JSON

{
  "event_type": "message_received",
  "instanceId": "90",
  "data": {
    "id": "[email protected]_7ECAED9EB68D3474BE591443134C2E3F",
    "from": "[email protected]",
    "to": "[email protected]",
    "ack": "pending",
    "type": "chat",
    "body": "I can't send a message using php code\nCan you help me",
    "fromMe": false,
    "isForwarded": false,
    "time": 1643311467
  }
}

Финли: тест проекта и получение сообщений WhatsApp первое сообщение

Теперь отправьте сообщение WhatsApp на номер, к которому вы привязываете экземпляр.
Будет распечатан номер отправителя и отправленное сообщение.

Поздравляем. Вы получили первое сообщение WhatsApp.

Теперь, получив сообщения WhatsApp, вы можете легко создать чат-бота, используя Python и Ultramsg API.

Типы веб-перехватчиков для использования с WhatsApp API и Ultramsg

  • webhook_message_received : уведомления в веб-перехватчиках при получении сообщения.
  • webhook_message_create : уведомления в веб-перехватчиках при создании сообщения.
  • webhook_message_ack : подтверждение (сообщение доставлено и просмотрено) уведомления в веб-перехватчиках.

вы можете ознакомиться с полной документацией по Whatsapp API и часто задаваемыми вопросами.