【问题标题】:Bot Framework doesn't have username if telegram profile doesn't have full name or username如果电报配置文件没有全名或用户名,则 Bot Framework 没有用户名
【发布时间】:2017-11-17 07:21:58
【问题描述】:

如果消息是由没有用户名和全名的用户发送的,则从 Bot Framework 传递的消息在 from 对象中没有 name 属性。例如,如果您像这样从个人资料中删除名字或姓氏

这是我从只有名字的用户发送的消息中获得的 json 示例(查看 from 对象):

{
  "channelData": {
    "message": {
      "chat": {
        "all_members_are_administrators": true,
        "id": -219911672,
        "title": "jlarky-dev",
        "type": "group"
      },
      "date": 1493246056,
      "from": {
        "first_name": "Test",
        "id": 107390199
      },
      "message_id": 100,
      "text": "test"
    },
    "update_id": 66470785
  },
  "channelId": "telegram",
  "conversation": {
    "id": "-219911672",
    "isGroup": true,
    "name": "jlarky-dev"
  },
  "entities": [
    {
      "mentioned": {
        "id": "JLarkyTestBot",
        "name": "jlarky_test"
      },
      "text": "JLarkyTestBot",
      "type": "mention"
    }
  ],
  "from": {
    "id": "107390199"
  },
  "id": "KxBlE8JsLfg",
  "recipient": {
    "id": "JLarkyTestBot",
    "name": "jlarky_test"
  },
  "serviceUrl": "https://telegram.botframework.com",
  "text": "test",
  "timestamp": "2017-04-26T22:34:17.4109674Z",
  "type": "message"
}

【问题讨论】:

  • 我无法回答这个问题。总之,name 属性来自ChannelData 而不是from 对象。
  • @OmG from 对象总是有 idname 除非出现像这样的一些错误,channelData 是机器人框架发送给你的通道(第三方服务)特定数据.
  • 因此,您可以从ChannelData 获取name,正如您在结果中看到的那样。
  • 使用channelData.from.first_name
  • @NilsW 是的,我认为这可能是最好的方式,看到这个错误修复仍然很酷。

标签: botframework telegram-bot


【解决方案1】:

由于@NilsW 的评论,我再次对此进行了测试,看起来from.name 仅在设置电报配置文件的用户名时才存在(可以从channelData.message.from.username 查找相同的内容),所以我想它不显示是有道理的未设置用户名时的用户名:) 并且没有last_name 部分与此处无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 2013-07-09
    • 2018-11-25
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多