إنشاء Viberbot كامل على Django 2 و Viber REST API. الجزء الأول - Webhook

قم بتثبيت Webhook ليعمل البوت على فايبر وأرسل أول طلب POST إلى رسول الخلفية


استنادًا إلى تجربتي في تطوير Viber والكثير من الآراء المختلطة ، أنشر سلسلة من المقالات حول إنشاء وإطلاق viberbot. لفهم الصورة الكاملة ككل ، سنعمل مع REST API VIBER نظيف ، بدون أي أغلفة.

أثبت Radio Viber أنه غير قياسي للغاية ، لذلك سنقوم بإنشاء روبوت حوار كلاسيكي ( تم فصل الآلاف منه في البرقية ).

في الوقت نفسه ، سنرى جميع عيوب ومزايا botviber ونفهم: ما هو أسهل في روسيا - botviber VS bottelegram ، الاختلافات الرئيسية بين تطوير الروبوت لهذه المنصات.

صورة

مع مجموعة من الأساليب الهزيلة أكثر من تلك الموجودة في السلة - ومع ذلك ، في Viber ، يمكنك إنشاء واجهات واجهة مستخدم أكثر فاعلية ولا تقتصر على اللون الرمادي الباهت لأزرار القائمة وأزرار مضمنة.

المقالة موجهة أكثر للمبتدئين الذين لم يتمكنوا من التعامل مع Viber REST API.

في غضون شهر ، 1-2 برنامج تعليمي في الأسبوع ، أي شخص يريد أن يتعلم كيفية إنشاء برامج الروبوت على Viber messenger ، مع لوحة إدارة شخصية ، وأدوات توزيع الرسائل المجمعة ، دون أي مصممين ومنصات. نحن أيضًا ننشئ صفحة minilanding (مثل روبوتات برقية) للبحث عن برنامج الروبوت الخاص بك والترويج له.

أوصي بدراسة Django بالتوازي ، الذي لم يبدأ بعد ، وميزات عمله في أوضاع التطوير والإنتاج.

لا يوجد روبوت كافي - ثم لنبدأ


1. قم بتثبيت وتشغيل Django> = 2.1 و Python> = 3.6.
إنشاء تطبيق myviberbot باستخدام أمر مدير Django القياسي:

python manage.py startapp myviberbot

لا تنس أن تضيفه إلى ملف settings.py في هذا القسم:

#    settings.py 

DEBUG = True

ALLOWED_HOSTS = ['*']

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myviberbot', #    
]
#

لنفترض أنني قمت بربط مجال HTTPS الخاص بي وأريد تثبيت webhook لـ viber-bot على:
yourdomain.ru/webhook2020 - وقمت بتغيير yourdomain.ru إلى نطاقك بالطبع.

وسنتعامل مع جميع الأحداث في وظيفة def trx_bot () من myviberbot.views - ولكن المزيد عنها ...

أولاً وقبل كل شيء ، سنجري التصحيحات المقابلة لملف urls.py في قائمة محتوياته الكاملة:

# urls.py
from django.contrib import admin
from django.urls import path
from myviberbot.views import trx_bot
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('webhook2020', trx_bot), #url    - webhook2020, 
#  ,   
    ]

إذا لم تتعمق في الخفايا الدقيقة لـ Django - هنا ، في الرمز أعلاه ، فقد أرسلنا جميع الطلبات (الطلب) إلى webhook2020 على الإطلاق إلى وظيفة trx_bot ، الموجودة في مجلد مشروع myviberbot في ملف views.py. اعتبرها أدناه.

# views.py   myviberbot

from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def trx_bot(request):
    if request.method == "POST":
        viber = json.loads(request.body.decode('utf-8'))
        if viber['event'] == 'webhook':
            print(viber)
            print("Webhook  ") # -    
#       webhook
            return HttpResponse(status=200)
        else:
            print("  Webhook -   ,   POSTMAN") 
            return HttpResponse(status=500)
        return HttpResponse(status=200)

بعد تلقي 200 OK منا ، تكون خوادم فايبر الخلفية جاهزة للعمل معنا.

سترى الرسالة التي وصلت إلى مرسالك في دردشة برنامج الروبوت الخاص بك (تمت إضافة وظيفة الحوار أو إضافة الدردشة 1 إلى 1).

ولكن كيفية إرسال طلب POST إلى الواجهة الخلفية Viber أو تثبيت Webhook - هذا السؤال يقلق العديد من الأشخاص الذين اعتادوا على العمل مع برقية باستخدام طريقة get ، ولكن لا بأس - قرأنا بعناية:

2. أنا متأكد من أنك قد تلقيت بالفعل رمز الروبوت هنا ونشرنا تطبيق django على الاستضافة ( VDS أو Shared ) أو في البيئة المحلية (في هذه الحالة ، سيساعد نفق ngrok المؤقت) ،

أ) إذا كنا نختبر المشروع على الجهاز المحلي ،
فسنبدأ مع فريق المدير: python manager.py runserver

بعد بداية ناجحة ، نرفق ngrok.

ب) وهناك الكثير من الطرق للانطلاق في استضافة - أنا شخصياً أستخدم الراكب على الإنجاب. في حالة النحل ، ضع نسخة الحاوية مع php5.6 ليست أعلى - هذه نصيحة من begetovtsev.

لذلك - بدأ التطبيق - وضع webhook


يمكن لأي شخص يعرف كيفية استخدام المكوّن الإضافي POSTMAN لمتصفح Chrome تخطي الفقرة التالية وإرسال POST لـ webhook مباشرة من المتصفح.

سنقوم بإنشاء ملف على الجهاز المحلي بأي اسم ، على سبيل المثال sethook.py ، مع عدم نسيان مكتبة الطلبات (طلبات تثبيت النقاط)

#sethook
import requests
import json
auth_token = 'xxxxxxxxx-ttttttttttttttttt-wwwwwwwwwwww' #       #.2
hook = 'https://chatapi.viber.com/pa/set_webhook'
headers = {'X-Viber-Auth-Token': auth_token}


sen = dict(url='https://yourdomain.ru/webhook2020',
           event_types = ['unsubscribed', 'conversation_started', 'message', 'seen', 'delivered'])
# sen -  body     backend  viber
#seen, delivered -  ,     ,
#         ,   )

r = requests.post(hook, json.dumps(sen), headers=headers)
# r -       viber 
print(r.json())
#   print    "status_message":"ok" -   ,
#    

نبدأ بالأمر من دليل العمل:
python sethook.py

هذا كل شيء! يتم تعيين Webhook بواسطة طريقة POST. ترى رسالة وصلت إلى الدردشة (تمت إضافة وظيفة الحوار) ، مما يعني أنه تم تثبيت الرد التلقائي على الويب.

للمتابعة ...

في المقالة التالية سنقوم بتحليل الحدث ["chat_started"] ، للاتصال الأولي مع المستخدمين وتهيئة التفاعل معهم ، ستكتشف أن viberbot الخاص بك يعرف عن جميع المستخدمين وما لا يعرفه.

الجزء 2:
إنشاء Viberbot الكامل على Django 2 و Viber REST API. الجزء الثاني -

المواد المناقضة :

توثيق فايبر REST API
Django الإصدار 2.2
Radio-miner

Source: https://habr.com/ru/post/undefined/


All Articles