Интеграция Telegram с Dialogflow - событие KeyboardButton - PullRequest
0 голосов
/ 02 февраля 2020

У меня следующий код Telegram Bot python для получения location и contact информации о пользователе. Этот код отправляет событие обратно пользователю webhook, когда пользователь нажимает кнопку pu sh Share My Location / Share My Contact, когда у меня есть только Telegram, подключенный к моему backend webhook.

Создает следующий интерфейс телеграммы: enter image description here

 from telegram.ext import Updater
 import logging
 from telegram.ext import CommandHandler
 from telegram import InlineKeyboardButton,InlineKeyboardMarkup,KeyboardButton,ReplyKeyboardMarkup
 from telegram.ext import MessageHandler, Filters
 import json

 MY_API_CODE = '12345 ....'

 updater = Updater(token=MY_API_CODE, use_context=True)
 dispatcher = updater.dispatcher

 logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                      level=logging.INFO)

 def tbot_get_location_n_contact():
     """
     Request for User Contact and Location information.
     """
     location_keyboard = KeyboardButton(text="Share My Location", request_location=True)
     contact_keyboard = KeyboardButton(text="Share My Contact", request_contact=True)
     custom_keyboard = [[ location_keyboard, contact_keyboard ]]
     reply_markup = ReplyKeyboardMarkup(custom_keyboard, one_time_keyboard=True, resize_keyboard=True)
     return reply_markup

 def location(update, context):
     print('Inside location')
     print(update)
     context.bot.send_message(chat_id=update.effective_chat.id, text="Thanks for location information")

 def contact(update, context):
     print('Inside Contact')
     print(update)
     print('Contact : {0}'.format(update.effective_message.contact))
     print('Phone : {0}'.format(update.effective_message.contact.phone_number))
     context.bot.send_message(chat_id=update.effective_chat.id, text="Thanks for contact information")

 def start(update, context):
     print('Inside Start')
     print(update)
     reply_markup = tbot_get_location_n_contact()
     context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!", reply_markup=reply_markup)


 start_handler = CommandHandler('start', start)
 dispatcher.add_handler(start_handler)

 contact_handler = MessageHandler(Filters.contact, contact)
 dispatcher.add_handler(contact_handler)

 location_handler = MessageHandler(Filters.location, location)
 dispatcher.add_handler(location_handler)

 updater.start_polling()

Теперь, когда я интегрирую Telegram с Dialogflow (через https), я не вижу никаких запросов, достигающих на мой webhook, когда нажата кнопка Share My Location/Share My Contact.

Я думаю, что Dialogflow ожидает Intent для этого события, я создал намерение по умолчанию, которое использует webhook для полного заполнения, но, тем не менее, запрос кнопки pu sh не доходит до серверной части. Я что-то здесь упускаю?

...