Creando un Viberbot completo. Segunda parte: primer contacto o "conversion_started"

Enviar el primer mensaje al usuario: bienvenido y firme


En la primera parte, aprendimos cómo iniciar un iniciador, instalar webhook para nuestro proyecto botviber.

En este 2do, aprenderemos cómo enviar el primer mensaje que se muestra a nuestros usuarios, crear enlaces para buscar y lanzar nuestro bot, tanto dentro de ViberURL como NoViberURL

imagen


Formaremos enlaces al bot


1) QR sin conexión: se puede descargar desde el área de administración de afiliados de viber

2) Enlace para ViberURL messenger y messenger transfer

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

3) NoViberURL redirige el enlace en Internet, hay muchos acortadores de URL, pero todos parecen spam, por lo que recomiendo crear su propio código a partir de tres líneas de PHP y colocar el archivo en su alojamiento, aquí está el contenido del archivo foot.php

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

Saludos botviber o "evento": "conversación_iniciada"


Después de abrir el QR o seguir el enlace a la dirección de nuestra aplicación desde los servidores de Viber (Jetty), las solicitudes POST con un evento ("evento": "conversación_iniciada") llegan y su contenido completo se ve así:

POST DE PARÁMETROS ENTRANTES - o JSON de 13 campos
{
  "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  
  }
}


Pero en la mayoría de los casos solo nos interesan estos 5 campos
{
  "context": "fromlanding", #      
  "subscribed": false,
   "user": {
    "country": "RU", #      
    "id": "J2k6sasdgghaazDeoXVYww==", # ID    
    "name": "Denis"#   ,   .
  }
}


Y a veces solo necesitamos un campo
"Id": "J2k6sasdgghaazDeoXVYww =="

Este es el identificador principal de Viber del usuario, un análogo de chat_id en telegrama.
Y, tenga en cuenta que en el carrito chat_id, el único mensajero en todos los bots es el mismo que el número de teléfono móvil en todos los bots, y la identificación del ambiente es como un token y es único dentro de uno de sus bots. En otro bot, tu identificación será diferente ...

Los procesamos y respondemos para obtener una de las tres respuestas como en la captura de pantalla anterior
a) type = "text"
b) y aquí vemos el caso clásico de type = "rich_media"
c) en la tercera pantalla Type = "keyboard"

Más detalles sobre la API REST de viber , y a continuación consideraremos cómo obtener la primera opción

Como ya vemos, botviber puede ser calificado para cualquier negocio o una mini tienda, y también personalizar estilos para su sitio principal

1) para procesar mensajes de usuario en el archivo de proyecto myviberbot / views.py, realice los cambios:


#

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


Reinicie nuestro proyecto Django.

Desafortunadamente, "Rakuten Viber" no ofrece páginas oficiales a PA y la comunidad a nadie, con excepción de grandes marcas y figuras públicas, por lo tanto, para la promoción de SEO y relaciones públicas en las redes sociales, etc. Recomiendo crear un minilanding, una pequeña página a la que todos acceden desde el sitio principal u otros. Aquí hay una muestra de recursos: Inicie con éxito botviber. Continuará ... En el próximo artículo, analizaremos el evento ["mensaje"], para procesar los mensajes de los usuarios, aprenderá qué hacer para llevar a cabo un diálogo, cómo separar los siguientes mensajes, en general cómo enseñar a botviber a comprender que estos son los siguientes. (Creación de un Viberbot completo en Django 2 y la API REST de Viber. Tercera parte - Mensaje) Materiales: documentación de la API REST de viber















Django versión 2.2
Radio-miner

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


All Articles