Python ile WhatsApp Sohbet Robotu Oluşturun

Ultramsg API ile sohbet robotu oluşturmak çok kolay, Python dilini kullanarak basit adımlarla bir müşteri hizmetleri sohbet robotu ve en iyi yapay zeka sohbet botu oluşturabilirsiniz.

Chatbot WhatsApp botunun fırsatları ve görevleri

  • Komut listesinin çıktısı.
  • Üzerinde çalışan botun sunucu zamanının çıktısı .
  • Telefon numarasına veya gruba resim gönderme.
  • Ses dosyası gönderiliyor.
  • ppt ses kaydı gönderiliyor.
  • Video Dosyası Gönderiliyor.
  • Kişi gönderiliyor.

Adım 1: şişeyi kurun

FLASK çerçevesini kullanarak sunucuyu dağıtmamız gerekiyor.
FLASK, gelen isteklere uygun şekilde yanıt verilmesini ve bunları işlemesini sağlar.

pip install flask

Adım 2: ngrok’u kurun

yerel kalkınma amaçları için bir tünel açma hizmeti gereklidir. Bu örnekte ngrok kullanılmıştır, ngrok’u buradan indirebilirsiniz.

Adım 3: Yeni şişe uygulaması oluşturun

Dosyayı oluşturacağız: app.py Ve içine aşağıdaki kodu yazıyoruz

from flask import Flask, request, jsonify
from ultrabot import ultraChatBot
import json

app = Flask(__name__)

@app.route('/', methods=['POST'])
def home():
    if request.method == 'POST':
        bot = ultraChatBot(request.json)
        return bot.Processingـincomingـmessages()

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

Adım 4 : Gelen mesaj işleme

Dosyayı oluşturacağız: ultrabot.py Ve içine aşağıdaki kodu yazıyoruz

import json
import requests
import datetime

class ultraChatBot():    
    def __init__(self, json):
        self.json = json
        self.dict_messages = json['data']
        self.ultraAPIUrl = 'https://api.ultramsg.com/{{instance_id}}/'
        self.token = '{{token}}'

   
    def send_requests(self, type, data):
        url = f"{self.ultraAPIUrl}{type}?token={self.token}"
        headers = {'Content-type': 'application/json'}
        answer = requests.post(url, data=json.dumps(data), headers=headers)
        return answer.json()

    def send_message(self, chatID, text):
        data = {"to" : chatID,
                "body" : text}  
        answer = self.send_requests('messages/chat', data)
        return answer

    def send_image(self, chatID):
        data = {"to" : chatID,
                "image" : "https://file-example.s3-accelerate.amazonaws.com/images/test.jpeg"}  
        answer = self.send_requests('messages/image', data)
        return answer

    def send_video(self, chatID):
        data = {"to" : chatID,
                "video" : "https://file-example.s3-accelerate.amazonaws.com/video/test.mp4"}  
        answer = self.send_requests('messages/video', data)
        return answer

    def send_audio(self, chatID):
        data = {"to" : chatID,
                "audio" : "https://file-example.s3-accelerate.amazonaws.com/audio/2.mp3"}  
        answer = self.send_requests('messages/audio', data)
        return answer


    def send_voice(self, chatID):
        data = {"to" : chatID,
                "audio" : "https://file-example.s3-accelerate.amazonaws.com/voice/oog_example.ogg"}  
        answer = self.send_requests('messages/voice', data)
        return answer

    def send_contact(self, chatID):
        data = {"to" : chatID,
                "contact" : "[email protected]"}  
        answer = self.send_requests('messages/contact', data)
        return answer


    def time(self, chatID):
        t = datetime.datetime.now()
        time = t.strftime('%Y-%m-%d %H:%M:%S')
        return self.send_message(chatID, time)


    def welcome(self,chatID, noWelcome = False):
        welcome_string = ''
        if (noWelcome == False):
            welcome_string = "Hi , welcome to WhatsApp chatbot using Python\n"
        else:
            welcome_string = """wrong command
Please type one of these commands:
*hi* : Saluting
*time* : show server time
*image* : I will send you a picture
*video* : I will send you a Video
*audio* : I will send you a audio file
*voice* : I will send you a ppt audio recording
*contact* : I will send you a contact
"""
        return self.send_message(chatID, welcome_string)


    def Processingـincomingـmessages(self):
        if self.dict_messages != []:
            message =self.dict_messages
            text = message['body'].split()
            if not message['fromMe']:
                chatID  = message['from'] 
                if text[0].lower() == 'hi':
                    return self.welcome(chatID)
                elif text[0].lower() == 'time':
                    return self.time(chatID)
                elif text[0].lower() == 'image':
                    return self.send_image(chatID)
                elif text[0].lower() == 'video':
                    return self.send_video(chatID)
                elif text[0].lower() == 'audio':
                    return self.send_audio(chatID)
                elif text[0].lower() == 'voice':
                    return self.send_voice(chatID)
                elif text[0].lower() == 'contact':
                    return self.send_contact(chatID)
                else:
                    return self.welcome(chatID, True)
            else: return 'NoCommand'

Adım 5 : WhatsApp Chatbot projesini başlatın

FLASK sunucusunu çalıştırın

flask run

ngrok’u çalıştır

Windows için ngrok’u çalıştırın:

ngrok http 5000

Mac için ngrok’u çalıştırın:

./ngrok http 5000

Adım 6 : Örnek ayarlarında URL Web kancasını ayarlayın

ngrok çalıştırdıktan sonra, örneğin bir tane görmelisiniz:

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

URL’nizi Örnek ayarlarına yapıştırın ، Aşağıdaki resimdeki gibi:

Python ve webhook-ultramsg kullanarak WhatsApp mesajları alın

Kodda kullanılan Chatbot İşlevleri

send_message

WhatsApp metin mesajları göndermek için kullanılır

def send_message(self, chatID, text):
    data = {"to" : chatID,
        "body" : text}  
    answer = self.send_requests('messages/chat', data)
    return answer
  • ChatID – Mesajın onun için gönderileceği sohbetin kimliği, örn. [email protected] .
  • Metin – Mesajın metni.

time

Geçerli sunucu saatini gönderir.

def time(self, chatID):
    t = datetime.datetime.now()
    time = t.strftime('%Y-%m-%d %H:%M:%S')
    return self.send_message(chatID, time)
  • ChatID – Mesajın onun için gönderileceği sohbetin kimliği, örn. [email protected] .

send_image

Telefon numarasına veya gruba resim gönderin

def send_image(self, chatID):
    data = {"to" : chatID,
        "image" : "https://file-example.s3-accelerate.amazonaws.com/images/test.jpeg"}  
    answer = self.send_requests('messages/image', data)
    return answer

send_video

Telefon numarasına veya gruba Video gönder

def send_video(self, chatID):
    data = {"to" : chatID,
        "video" : "https://file-example.s3-accelerate.amazonaws.com/video/test.mp4"}  
    answer = self.send_requests('messages/video', data)
    return answer

send_audio

Telefon numarasına veya gruba bir ses dosyası gönderin

def send_audio(self, chatID):
    data = {"to" : chatID,
        "audio" : "https://file-example.s3-accelerate.amazonaws.com/audio/2.mp3"}  
    answer = self.send_requests('messages/audio', data)
    return answer

send_voice

Telefon numarasına veya gruba bir ppt ses kaydı gönderin

def send_voice(self, chatID):
    data = {"to" : chatID,
        "audio" : "https://file-example.s3-accelerate.amazonaws.com/voice/oog_example.ogg"}  
    answer = self.send_requests('messages/voice', data)
    return answer

send_contact

Telefon numarasına veya gruba bir kişi veya kişi listesi gönderme

def send_contact(self, chatID):
    data = {"to" : chatID,
        "contact" : "[email protected]"}  
    answer = self.send_requests('messages/contact', data)
    return answer

Processingـincomingـmessages

def Processingـincomingـmessages(self):
    if self.dict_messages != []:
        message =self.dict_messages
        text = message['body'].split()
        if not message['fromMe']:
        chatID  = message['from'] 
        if text[0].lower() == 'hi':
            return self.welcome(chatID)
        elif text[0].lower() == 'time':
            return self.time(chatID)
        elif text[0].lower() == 'image':
            return self.send_image(chatID)
        elif text[0].lower() == 'video':
            return self.send_video(chatID)
        elif text[0].lower() == 'audio':
            return self.send_audio(chatID)
        elif text[0].lower() == 'voice':
            return self.send_voice(chatID)
        elif text[0].lower() == 'contact':
            return self.send_contact(chatID)
        else:
            return self.welcome(chatID, True)
        else: return 'NoCommand'

Bu videoda önceki adımları görebilirsiniz:

kullanışlı bağlantılar