Membuat Viberbot lengkap di Django 2 dan API Viber REST. Bagian Satu - Webhook

Instal Webhook untuk bot agar berfungsi di viber dan kirim permintaan POST pertama ke messenger backend


Berdasarkan pengalaman saya dalam mengembangkan untuk Viber dan banyak pendapat yang beragam, saya menerbitkan serangkaian artikel tentang membuat dan meluncurkan viberbot. Untuk memahami gambaran lengkap secara keseluruhan, kami akan bekerja dengan VIBER REST API yang bersih, tanpa pembungkus apa pun.

Radio Viber terbukti terlalu non-standar, jadi kami akan membuat bot dialog klasik ( ribuan di antaranya telah bercerai dalam telegram ).

Pada saat yang sama, kita akan melihat semua kelemahan dan keuntungan botviber dan memahami: apa yang lebih mudah di Rusia - botviber VS bottelegram, perbedaan utama antara pengembangan bot platform ini.

gambar

Dengan seperangkat metode yang lebih sedikit daripada di keranjang - namun, di Viber Anda dapat membuat antarmuka UI yang jauh lebih efektif dan tidak membatasi diri Anda pada warna abu - abu kusam dari tombol menu dan tombol sebaris.

Artikel ini lebih ditargetkan untuk pemula yang tidak berhasil berurusan dengan API Viber REST.

Dalam sebulan, 1-2 tutorial per minggu, siapa pun yang ingin mempelajari cara membuat bot pada messenger Viber, dengan panel admin pribadi, alat distribusi pesan massal, tanpa perancang dan platform. Kami juga membuat halaman minilanding (seperti bot telegram) untuk mencari dan mempromosikan bot Anda.

Saya merekomendasikan mempelajari Django secara paralel, yang belum memulai, dan fitur karyanya dalam mode pengembangan dan produksi.

Bot tidak cukup - maka mari kita mulai


1. Instal dan jalankan Django> = 2.1 dan Python> = 3.6.
buat aplikasi myviberbot menggunakan perintah standar manajer Django:

python manage.py startapp myviberbot

Jangan lupa untuk menambahkannya ke file settings.py di bagian ini:

#    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', #    
]
#

Misalkan saya menautkan domain HTTPS saya dan saya ingin menginstal webhook untuk viber-bot di:
yourdomain.ru/webhook2020 - Dan Anda mengubah domaindomain.ru ke domain Anda, tentu saja.

Dan kami akan menangani semua acara di fungsi def trx_bot () dari myviberbot.views - tetapi lebih lanjut tentang itu ...

Pertama-tama, kami akan membuat koreksi yang sesuai dengan file urls.py dalam daftar isinya lengkap:

# 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, 
#  ,   
    ]

Jika Anda tidak masuk jauh ke dalam seluk-beluk Django, di sini, dalam kode di atas, kami benar-benar mengirim semua permintaan (permintaan) ke webhook2020 ke fungsi trx_bot, yang terletak di folder proyek myviberbot di file views.py. Pertimbangkan di bawah ini.

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

Setelah menerima 200 OK dari kami, server backend viber siap bekerja dengan kami.

Anda akan melihat pesan yang datang ke messenger Anda di chat bot Anda (fungsi dialog ditambahkan atau Chat 1to1 ditambahkan).

Tetapi bagaimana cara mengirim permintaan POST ke backend Viber atau menginstal Webhook - pertanyaan ini membuat khawatir banyak orang yang terbiasa bekerja dengan telegram menggunakan metode get, tetapi tidak apa-apa - kami dengan cermat membaca:

2. Saya yakin bahwa pada titik ini, Anda telah menerima token bot di sini dan menyebarkan aplikasi Django di hosting ( VDS atau Dibagikan ) atau di lingkungan lokal (dalam hal ini, terowongan sementara ngrok akan membantu),

a) Jika kami menguji proyek pada mesin lokal, maka kami akan memulainya dengan tim manajer:
python manage.py runserver

Setelah awal yang sukses, kami lampirkan ngrok.

b) Dan ada banyak cara untuk memulai di hosting - secara pribadi, saya menggunakan penumpang saat beget. Dalam hal beget, masukkan versi container dengan php5.6 tidak lebih tinggi - ini adalah saran dari begetovtsev.

Jadi - aplikasi sudah mulai - pasang webhook


Siapa pun yang tahu cara menggunakan plugin POSTMAN untuk Chrome dapat melewati paragraf berikutnya dan mengirim POST untuk webhook langsung dari browser.

Kami akan membuat file di mesin lokal dengan nama apa pun, misalnya sethook.py, tidak melupakan pustaka permintaan (permintaan pemasangan pip)

#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" -   ,
#    

Kita memulainya dengan perintah dari direktori kerja:
python sethook.py

Itu dia! Webhook diatur oleh metode POST. Anda melihat pesan yang datang ke obrolan Anda (fungsi Dialog ditambahkan), yang berarti bahwa webhook diinstal.

Untuk dilanjutkan ...

Pada artikel berikutnya kami akan menganalisis acara ["conversation_started"], untuk kontak awal dengan pengguna dan inisialisasi interaksi dengan mereka, Anda akan mengetahui bahwa viberbot Anda mengetahui tentang semua pengguna dan apa yang tidak dia ketahui.

BAGIAN 2:
Membuat Viberbot lengkap di Django 2 dan API Viber REST. Bagian Dua -

Bahan onversation_started :

Dokumentasi viber REST API
Django versi 2.2
Radio-penambang

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


All Articles