पायथन के साथ व्हाट्सएप चैटबॉट बनाएं

चैटबॉट बनाना अल्ट्राएमएसजी एपीआई के साथ बहुत आसान है, आप एक ग्राहक सेवा चैटबॉट और सर्वश्रेष्ठ एआई चैटबॉट बना सकते हैं पायथन भाषा का उपयोग करके सरल चरणों के माध्यम से।

चैटबॉट के अवसर और व्हाट्सएप बॉट के कार्य

  • कमांड सूची का आउटपुट।
  • बॉट के सर्वर समय का आउटपुट पर चल रहा है।
  • फ़ोन नंबर या समूह पर छवि भेजना।
  • ऑडियो फाइल भेजी जा रही है।
  • पीपीटी ऑडियो रिकॉर्डिंग भेज रहा है।
  • वीडियो फ़ाइल भेज रहा है।
  • संपर्क भेज रहा है।

चरण 1: फ्लास्क स्थापित करें

हमें फ्लास्क ढांचे का उपयोग करके सर्वर को तैनात करने की आवश्यकता है।
फ्लास्क आने वाले अनुरोधों का आसानी से जवाब देने और उन्हें संसाधित करने की अनुमति देता है।

pip install flask

चरण 2: ngrok . स्थापित करें

स्थानीय विकास उद्देश्यों के लिए, एक सुरंग सेवा की आवश्यकता है। यह उदाहरण ngrok का उपयोग करता है, आप यहां से ngrok डाउनलोड कर सकते हैं।

चरण 3: नया फ्लास्क ऐप बनाएं

हम फाइल बनाएंगे: app.py और हम उसके अंदर निम्नलिखित कोड लिखते हैं

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()

चरण 4: आने वाली संदेश प्रसंस्करण

हम फाइल बनाएंगे: ultrabot.py और हम इसके अंदर निम्नलिखित कोड लिखते हैं

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'

चरण 5: व्हाट्सएप चैटबॉट प्रोजेक्ट शुरू करें

फ्लास्क सर्वर चलाएं

flask run

भागो ngrok

विंडोज़ के लिए एनग्रोक चलाएं:

ngrok http 5000

मैक के लिए ngrok चलाएँ:

./ngrok http 5000

चरण 6 : URL Webhook को इंस्टेंस सेटिंग में सेट करें

ngrok चलाने के बाद, आपको उदाहरण के लिए एक देखना चाहिए:

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

इंस्टेंस सेटिंग्स में अपना यूआरएल पेस्ट करें ، निम्न चित्र के रूप में:

पायथन और वेबहुक-अल्ट्राम्सजी का उपयोग करके व्हाट्सएप संदेश प्राप्त करें

कोड में प्रयुक्त चैटबॉट फंक्शन

मेसेज भेजें

व्हाट्सएप टेक्स्ट मैसेज भेजने के लिए इस्तेमाल किया जाता है

def send_message(self, chatID, text):
    data = {"to" : chatID,
        "body" : text}  
    answer = self.send_requests('messages/chat', data)
    return answer
  • चैटआईडी – उस चैट की आईडी जहां उसके लिए संदेश भेजा जाना चाहिए, उदाहरण के लिए [email protected]
  • पाठ – संदेश का पाठ।

समय

वर्तमान सर्वर समय भेजता है।

def time(self, chatID):
    t = datetime.datetime.now()
    time = t.strftime('%Y-%m-%d %H:%M:%S')
    return self.send_message(chatID, time)
  • चैटआईडी – उस चैट की आईडी जहां उसके लिए संदेश भेजा जाना चाहिए, उदाहरण के लिए [email protected]

भेजें_छवि

फ़ोन नंबर या समूह पर एक छवि भेजें

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 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'

आप इस वीडियो में पिछले चरण देख सकते हैं:

उपयोगी कड़ियां