Telegram bot api 模拟用户交互
Telegram bot api simulate user interaction
我正在使用电报机器人 api,我想在确定的时间内向用户发送消息,但机器人需要接收 "message" 才能发送内容,我的问题是:
是否可以发送模拟用户交互的更新?
我的意思是这样的:
在这里,我创建更新以模拟用户交互 (sendUpdate)
是一个自定义方法只是举例,这实际上不起作用
public void sendUpdate() {
//sending the update to simulate user interaction
Update upd = new Update();
//method that telegram bot api uses to reply when you send a message to the bot
onUpdateReceived(upd);
}
@Override
//Here I want to recipt my update to simulate the user interaction, and send a message witout user input
public void onUpdateReceived(Update update) {
System.out.println(update);
LOGGER.setLevel(Level.ALL);
LOGGER.addHandler(new ConsoleHandler());
LOGGER.info("2");
if (update.hasMessage() && update.getMessage().hasText()) {
// Set variables
String message_text = "Message";
long chat_id = update.getMessage().getChatId();
SendMessage message = new SendMessage()
.setChatId(chat_id)
.setText(message_text);
try {
this.sendMessage(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
如果你想测试你的 API webhook 并模拟用户交互,我更喜欢模拟整个 POST 对你的 webhook URI 的请求(URI,你的 Telegram Bot 在哪里监听,并从 Telegram 接收更新)。
您可以使用任何您想要的工具,我正在使用例如 Fiddler(选项卡 Composer)。在你的body里面,你会放JSON(它会变成你的Update
object)
方法类型:POST
域:https://whereyourwebhookislistening.com
Headers: content-type: application/json
请求Body
例如:
{
"update_id":123456789,
"message":{
"message_id":123,
"from":{
"id":123456789,
"is_bot":false,
"first_name":"Test",
"language_code":"ru-RU"
},
"date":1517384207,
"chat":{
"id":123456789,
"type":"private",
"first_name":"Testr",
"all_members_are_administrators":false,
},
"forward_from_message_id":0,
"text":"Test text",
"delete_chat_photo":false,
"group_chat_created":false,
"supergroup_chat_created":false,
"channel_chat_created":false,
"migrate_to_chat_id":0,
"migrate_from_chat_id":0,
},
}
通过这种方法,您可以模拟来自 Telegram Bot 的真实 webhook 调用。添加示例请求的屏幕截图:
我正在使用电报机器人 api,我想在确定的时间内向用户发送消息,但机器人需要接收 "message" 才能发送内容,我的问题是: 是否可以发送模拟用户交互的更新?
我的意思是这样的: 在这里,我创建更新以模拟用户交互 (sendUpdate) 是一个自定义方法只是举例,这实际上不起作用
public void sendUpdate() {
//sending the update to simulate user interaction
Update upd = new Update();
//method that telegram bot api uses to reply when you send a message to the bot
onUpdateReceived(upd);
}
@Override
//Here I want to recipt my update to simulate the user interaction, and send a message witout user input
public void onUpdateReceived(Update update) {
System.out.println(update);
LOGGER.setLevel(Level.ALL);
LOGGER.addHandler(new ConsoleHandler());
LOGGER.info("2");
if (update.hasMessage() && update.getMessage().hasText()) {
// Set variables
String message_text = "Message";
long chat_id = update.getMessage().getChatId();
SendMessage message = new SendMessage()
.setChatId(chat_id)
.setText(message_text);
try {
this.sendMessage(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
如果你想测试你的 API webhook 并模拟用户交互,我更喜欢模拟整个 POST 对你的 webhook URI 的请求(URI,你的 Telegram Bot 在哪里监听,并从 Telegram 接收更新)。
您可以使用任何您想要的工具,我正在使用例如 Fiddler(选项卡 Composer)。在你的body里面,你会放JSON(它会变成你的Update
object)
方法类型:POST
域:https://whereyourwebhookislistening.com
Headers: content-type: application/json
请求Body
例如:
{
"update_id":123456789,
"message":{
"message_id":123,
"from":{
"id":123456789,
"is_bot":false,
"first_name":"Test",
"language_code":"ru-RU"
},
"date":1517384207,
"chat":{
"id":123456789,
"type":"private",
"first_name":"Testr",
"all_members_are_administrators":false,
},
"forward_from_message_id":0,
"text":"Test text",
"delete_chat_photo":false,
"group_chat_created":false,
"supergroup_chat_created":false,
"channel_chat_created":false,
"migrate_to_chat_id":0,
"migrate_from_chat_id":0,
},
}
通过这种方法,您可以模拟来自 Telegram Bot 的真实 webhook 调用。添加示例请求的屏幕截图: