Membuat Viberbot lengkap. Bagian dua - kontak pertama atau "conversion_started"

Mengirim pesan pertama kepada pengguna - selamat datang dan masuk


Pada bagian pertama, kami belajar cara meluncurkan starter, menginstal webhook untuk proyek botviber kami.

Pada tanggal 2 ini, kita akan belajar bagaimana mengirim pesan pertama yang ditunjukkan kepada pengguna kita, membuat tautan untuk mencari dan meluncurkan bot kita, baik di dalam ViberURL dan NoViberURL

gambar


Kami akan membentuk tautan ke bot


1) Offline QR - dapat diunduh dari area admin afiliasi

viber 2) Tautan untuk messenger ViberURL dan transfer messenger

viber://pa?chatURI=dinner&context=fromhabr

3) Tautan pengalihan NoViberURL di Internet ada banyak penyingkat URL seperti itu - tetapi semuanya terlihat seperti spam, jadi saya sarankan untuk membuat kode Anda sendiri dari tiga baris PHP dan meletakkan file di hosting Anda, berikut adalah isi dari file foot.php

<?php
header ("Location: viber://pa?chatURI=dinner");
exit();

Botviber salam atau "acara": "conversation_started"


Setelah membuka QR atau mengikuti tautan ke alamat aplikasi kami dari server Viber (Jetty), POST meminta acara ("event": "conversation_started") tiba dan konten lengkapnya terlihat seperti ini:

PARAMETER POST INCOMING - atau JSON dari 13 bidang
{
  "chat_hostname": "SN-327_", #  Viber    -   "chat_hostname"
  "event": "conversation_started", #          
  "context": "fromlanding", #    UTM     
  "message_token": 5406893180055821524, #  
  "subscribed": false, #    ,   true   
  "timestamp": 1581161565470, # UNIXTIME 
  "type": "open", #  
  "user": {
    "api_version": 8,  #   API   . 
    "avatar": "https://media-direct.cdn.viber.com/avatar...", #      -   ,   
    "country": "RU", #       (UA-, BY-, IL-, MD - )
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "language": "ru", #      (  )
    "name": "Denis" β„– #   Viber -      -     name  
  }
}


Tetapi dalam kebanyakan kasus kami hanya tertarik pada 5 bidang ini
{
  "context": "fromlanding", #      
  "subscribed": false,
   "user": {
    "country": "RU", #      
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "name": "Denis" β„– #   ,   .
  }
}


Dan terkadang kita hanya membutuhkan satu bidang
"Id": "J2k6sasdgghaazDeoXVYww =="

Ini adalah pengidentifikasi Viber utama pengguna, analog dari chat_id di telegram.
Dan, harap dicatat bahwa di kereta chat_id ada satu messenger di semua bot di seluruh jaringan - seperti nomor ponsel, dan id dalam getaran - itu seperti token dan unik dalam salah satu bot Anda. Di bot lain, id Anda akan berbeda ...

Kami memprosesnya dan menjawab untuk mendapatkan salah satu dari tiga jawaban seperti pada tangkapan layar di atas
a) type = "text"
b) dan di sini kita melihat case klasik type = "rich_media"
c) pada layar ketiga Type = "keyboard"

Lebih detail tentang viber REST API , dan di bawah ini kami akan mempertimbangkan cara mendapatkan opsi pertama

Seperti yang telah kita lihat, botviber dapat dicap untuk bisnis apa pun atau toko mini, serta gaya yang sesuai untuk situs utama Anda

1) untuk memproses pesan pengguna di file proyek myviberbot / views.py, buat perubahan:


#

import requests #      
import json 
from django.shortcuts import HttpResponse
from django.views.decorators.csrf import csrf_exempt

auth_token = '45df835d27d01f-cd2e7wetwerga18a8-9a7wert786234' #!     
url = 'https://chatapi.viber.com/pa/send_message'
headers = {'X-Viber-Auth-Token': auth_token}

#     
def sending(func):
    def wrapped(*args):
        return requests.post(url, json.dumps(func(*args)), headers=headers)
    return wrapped

#  
@sending
def send_text(agent, text, track=None):
    m = dict(receiver=agent, min_api_version=2, tracking_data=track, type="text", text=text)
    return m

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


def conversation(viber):
    id = viber['user']['id']
    if viber['subscribed']:
	    send_text(id, '  ')
    else:
        send_text(id, '   ?\n\n   .      ...')


Mulai ulang proyek Django kami.

Sayangnya, "Rakuten Viber" tidak memberikan halaman resmi kepada PA dan komunitas kepada siapa pun, kecuali untuk merek besar dan tokoh publik, oleh karena itu, untuk promosi SEO dan PR di jejaring sosial, dll. Saya sarankan membuat minilanding - halaman kecil yang digunakan semua orang untuk mengunjungi situs utama atau orang lain. Berikut adalah contoh sumber daya: Berhasil meluncurkan botviber. Untuk dilanjutkan ... Pada artikel berikutnya, kami akan menganalisis acara ["pesan"], untuk memproses pesan pengguna, Anda akan mempelajari apa yang harus dilakukan untuk melakukan dialog, cara memisahkan pesan-pesan berikut, umumnya cara mengajar botviber untuk memahami bahwa ini adalah yang berikut. (Membuat Viberbot lengkap pada Django 2 dan API Viber REST. Bagian Tiga - Pesan) Bahan: dokumentasi viber REST API















Django versi 2.2
Radio-penambang

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


All Articles