У меня следующий код Telegram Bot python для получения location
и contact
информации о пользователе. Этот код отправляет событие обратно пользователю webhook, когда пользователь нажимает кнопку pu sh Share My Location / Share My Contact
, когда у меня есть только Telegram, подключенный к моему backend webhook.
Создает следующий интерфейс телеграммы:
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 не доходит до серверной части. Я что-то здесь упускаю?