我在c#上使用Microsoft Bot Framework制作机器人。我试图获取发送到我的机器人的Telegram数据。当我直接使用Telegram bot API时,我可以看到有关用户的数据:
{
"update_id": 1111111,
"message": {
"message_id": 111111,
"from": {
"id": 1111111,
"is_bot": "False",
"first_name": "John",
"last_name": "Dillon",
"language_code": "en-EN"
},
"chat": {
"id": 111111111,
"first_name": "John",
"last_name": "Dillon",
"type": "private"
},
"date": 1111111,
"text": "Hello"
}
}
我从这个json中获取first_name,我的机器人发送消息如:
- Whould you like to use John as the name?
我需要在Microsoft Bot Framework中做同样的事情,最好是所有可能的渠道。我在documentation中找到了有关州数据的信息,但我的问题没有任何内容。他们建议我询问用户名。
答案 0 :(得分:1)
尝试使用channelData.from.first_name
。请注意,这仅在用户实际在Telegram的配置文件中设置其名称时才有效。这是一个工作的例子。
var message = await result as Activity;
string data = message.ChannelData.ToString();
TelegramData myClass = JsonConvert.DeserializeObject<TelegramData>(data);
var fname = myClass.message.from.first_name;
使用编辑&gt;粘贴特殊&gt;粘贴JSON作为类创建这些类:
public class TelegramData
{
public int update_id { get; set; }
public Message message { get; set; }
}
public class Message
{
public int message_id { get; set; }
public From from { get; set; }
public Chat chat { get; set; }
public int date { get; set; }
public string text { get; set; }
}
public class From
{
public int id { get; set; }
public bool is_bot { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public string username { get; set; }
public string language_code { get; set; }
}
public class Chat
{
public int id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public string username { get; set; }
public string type { get; set; }
}