在Microsoft Bot Framework获取有关用户的频道数据

时间:2018-01-12 12:59:06

标签: c# bots botframework

我在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中找到了有关州数据的信息,但我的问题没有任何内容。他们建议我询问用户名。

1 个答案:

答案 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; }
}