Création d'un Viberbot à part entière. Deuxième partie - premier contact ou "conversion_started"

Envoi du premier message à l'utilisateur - bienvenue et signature


Dans la première partie, nous avons appris comment lancer un démarreur, installer un webhook pour notre projet botviber.

Dans ce 2ème, nous apprendrons comment envoyer le premier message affiché à nos utilisateurs, créer des liens pour rechercher et lancer notre bot, à la fois dans ViberURL et NoViberURL

image


Nous formerons des liens vers le bot


1) Hors ligne QR - il peut être téléchargé à partir de la zone d' administration de l'affilié viber

2) Lien pour le messager ViberURL et le transfert de messager

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

3) Lien de redirection NoViberURL sur Internet, il existe de nombreux raccourcisseurs d'URL - mais ils ressemblent tous à du spam, je vous recommande donc de créer votre propre code à partir de trois lignes de PHP et de placer le fichier sur votre hébergement, voici le contenu du fichier foot.php

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

Salutations botviber ou "événement": "conversation_started"


Après avoir ouvert le QR ou cliqué sur le lien vers l'adresse de notre application à partir des serveurs Viber (Jetty), les requêtes POST avec un événement ("event": "conversation_started") arrivent et leur contenu complet ressemble à ceci:

POST DES PARAMÈTRES ENTRANTS - ou JSON de 13 champs
{
  "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  
  }
}


Mais dans la plupart des cas, nous ne sommes intéressés que par ces 5 domaines
{
  "context": "fromlanding", #      
  "subscribed": false,
   "user": {
    "country": "RU", #      
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "name": "Denis"#   ,   .
  }
}


Et parfois, nous n'avons besoin que d'un seul champ
"Id": "J2k6sasdgghaazDeoXVYww =="

Il s'agit de l'identifiant Viber principal de l'utilisateur, analogue de chat_id dans le télégramme.
Et, veuillez noter que dans le panier chat_id, l'unique messager dans tous les bots est le même que le numéro de mobile dans tous les bots, et l'id de la vibe est comme un token et est unique dans l'un de vos bots. Dans un autre bot, votre identifiant sera différent ...

Nous les traitons et répondons pour obtenir l'une des trois réponses comme dans la capture d'écran ci
- dessus a) type = "text"
b) et ici nous voyons le cas classique de type = "rich_media"
c) sur le troisième écran Type = "keyboard"

Plus de détails sur l' API REST viber , et ci-dessous, nous verrons comment obtenir la première option

Comme nous le voyons déjà, botviber peut être marqué pour toute entreprise ou mini-boutique, et également personnaliser les styles de votre site principal

1) pour traiter les messages utilisateur dans le fichier de projet myviberbot / views.py, apportez les modifications:


#

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


Redémarrez notre projet Django.

Malheureusement, "Rakuten Viber" ne donne des pages officielles à PA et à la communauté à personne, à l'exception des grandes marques et des personnalités publiques, par conséquent, pour la promotion SEO et les relations publiques sur les réseaux sociaux, etc. Je recommande de créer un mini-landing - une petite page vers laquelle tout le monde va depuis le site principal ou d'autres. Voici un échantillon de ressources: Lancez botviber avec succès. À suivre ... Dans le prochain article, nous analyserons l'événement ["message"], pour traiter les messages des utilisateurs, vous apprendrez quoi faire pour mener un dialogue, comment séparer les messages suivants, généralement comment apprendre à Botviber à comprendre que ce sont les suivants. (Création d'un Viberbot à part entière sur Django 2 et l'API Viber REST. Troisième partie - Message) Matériaux: documentation de l'API REST viber















Django version 2.2
Radio-mineur

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


All Articles