2015-07-09 2 views
0

Я разрабатываю бомбу телеграммы, используя php и веб-крючок. Все хорошо, но иногда мне хочется «подождать ответа» от пользователя. Например:Как использовать ForceReply в телеграмме bot

Если клиент пишет/инфо без каких-либо параметров, я хотел бы показать сообщение об использовании и запросить & дождитесь идентификатора.

Я знаю, что есть свойство «ForceReply», чтобы заставить ответить, но когда я его настраиваю, ничего не происходит, и я не знаю, как узнать, отвечает ли клиент сообщение на мой вопрос.

Должен ли я отключить мой php-сервер? (Я думаю, что это была бы плохая практика) Нужно ли мне ждать сообщения типа?

Благодаря

ответ

0

При использовании getUpdates или получать обновления через webhook, сообщение об обновлении будет содержать поле как reply_to_message поле. Вы можете использовать это, чтобы сравнить его с отправленным вами сообщением.

Если вы используете свой скрипт через webhooks, я бы предположил, что он выполняется только при получении сообщения. Если да, то я хотел бы предложить вам использовать что-то вроде кэша памяти/Redis для хранения сообщения, которое вы ожидаете ответа на, а затем, когда придет ответ, вы можете сравнить его со значением, хранящимся:

<?php 
// This script triggers as a webhook 
$message = file_get_contents('php://input'); 
$message = json_decode($message, true); 
$cache = new RedisClient('localhost'); 

if ($message->reply_to_message == $cache->get('original.message.id')) 
{ 
    var_dump('message reply received'); 
} 

Приведенный выше пример является некоторый «псевдо» код, который вы можете использовать в webhook для проверки ответа на конкретное сообщение.

+0

Большое вам спасибо! вот ответ! – aleksdj

Смежные вопросы