使用 Bot Connector API 向消息中添加语音
如果要为支持语音的通道构建机器人,则可以构建消息,指定机器人要说的文本。 还可以通过指定输入提示来尝试影响客户端麦克风的状态,以指示机器人是在接受、期望还是忽略用户输入。
可以将机器人配置为允许客户端应用程序通过 Direct Line 语音通道与之通信。
指定机器人要朗读的文本
若要在支持语音的通道上指定机器人要朗读的文本,请在代表消息的 Activity 对象内设置 speak
属性。 可以将 speak
属性设置为纯文本字符串或格式化为语音合成标记语言 (SSML) 的字符串,后者是一种基于 XML 的标记语言,可用于控制机器人语音的各种特性(如声音、语速、音量、发音和音调等)。 如果通道不支持,则消息将以文本形式传递。
以下请求发送一条消息,指定要显示的文本和要朗读的文本,并指示机器人期望用户输入。 它使用 SSML 格式来指定 speak
属性,以指示在朗读“sure”一词时应适当加强语气。 在此示例请求中,Direct Line 表示基本 URI;机器人发出的请求的基本 URI 可能不同。 有关设置基本 URI 的详细信息,请参阅 API 参考。
POST https://smba.trafficmanager.net/teams/v3/conversations/abcd1234/activities/5d5cdc723
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
"type": "message",
"from": {
"id": "12345678",
"name": "sender's name"
},
"conversation": {
"id": "abcd1234",
"name": "conversation's name"
},
"recipient": {
"id": "1234abcd",
"name": "recipient's name"
},
"text": "Are you sure that you want to cancel this transaction?",
"speak": "<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" xml:lang=\"en-US\">Are you <emphasis level=\"moderate\">sure</emphasis> that you want to cancel this transaction?</speak>",
"inputHint": "expectingInput",
"replyToId": "5d5cdc723"
}
输入提示
在支持语音的频道上发送消息时,可以通过同时包含输入提示来表达客户端麦克风的预期状态,以指示机器人是接受、预期还是忽略用户输入。 有关详细信息,请参阅向消息添加输入提示。