有没有办法识别 Bot 的输入是来自麦克风还是文本输入?

Is there a way to recognize weather the input to Bot is from microphone or is text input?

在我的 BOT 中,我想记录向 BOT 提供语音输入的时间。有没有办法在我的 BOT 框架解决方案中识别它。

当用户在网络聊天中与机器人对话时,发送给机器人的生成的 activity 将包含 channelData.speech 属性。您可以使用它作为标记,在机器人中确定 activity 是来自语音输入还是文本输入。当从文本输入生成 activity 时,不会附加 speech 属性。这适用于认知服务语音(channelId:'directline')和直线语音(channelId:'directlinespeech')。

示例activity

  {
    type: 'message',
    id: '26WpGqt6CCz7M8uRN0ugo9-o|0000002',
    timestamp: 2021-01-28T23:12:10.281Z,
    serviceUrl: 'https://directline.botframework.com/',
    channelId: 'directline',
    from: { id: '<<REDACTED>>', name: '', role: 'user' },
    conversation: { id: '26WpGqt6CCz7M8uRN0ugo9-o' },
    recipient: { id: '<<REDACTED>>', name: '<<REDACTED>>' },    
    textFormat: 'plain',
    locale: 'en-US',
    text: 'Hello.',
    entities: [ [Object] ],
    channelData: {
      speech: {
        alternatives: [
          {
            confidence: 0.51567326,
            transcript: 'Hello.'
          }
        ]
      },
      clientActivityID: '1611875530186v9cv78togd',
      clientTimestamp: '2021-01-28T23:12:10.186Z'
    },
    rawTimestamp: '2021-01-28T23:12:10.2819155Z',
    callerId: 'urn:botframework:azure'
  }

希望得到帮助!