botframework - 如何从机器人向用户发送主动消息
问题描述
我正在尝试从机器人向尚未安装机器人且不需要通过 REST API 安装机器人的团队用户发送消息。
我已尝试遵循此文档。
它明确指出:“发送消息以开始新的对话线程与发送消息以响应现有对话不同:当您的机器人开始新的对话时,没有预先存在的对话可以发布消息。在为了发送主动消息,您需要:"
据我了解,这意味着我正在尝试做的事情是可能的。我试图运行这个示例。
但是,据我所知,它需要一个对话 ID。没有对话ID,它就不起作用。
我尝试使用机器人网络令牌(通常用于响应用户的活动请求)发送这样的请求:
POST /v3/conversations
{
"bot": {
"id": "28:10j12ou0d812-2o1098-c1mjojzldxcj-1098028n ",
"name": "The Bot"
},
"members": [
{
"id": "29:012d20j1cjo20211"
}
],
"channelData": {
"tenant": {
"id": "197231joe-1209j01821-012kdjoj"
}
}
}
但是,它失败并显示以下消息:
Send Message to https://graph.microsoft.com/v3/conversations failed: (401) {
"error": {
"code": "InvalidAuthenticationToken",
"message": "Access token validation failure. Invalid audience.",
"innerError": {
"request-id": "92922235-8c87-47ed-92bc-4ba17469611a",
"date": "2019-09-24T14:43:59"
}
}
}
我猜这可能是因为我没有先发送 MicrosoftAppCredentials.TrustServiceUrl。但这是 ac# 调用。如何在 REST API 中进行相同的调用?
解决方案
请查看Bot Framework REST API文档。
POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=MICROSOFT-APP-ID&client_secret=MICROSOFT-APP-PASSWORD&scope=https%3A%2F%2Fapi.botframework.com%2F.default
推荐阅读
- mysql - diesel_cli 设置返回有关 DATABASE_URL 的错误
- c - 具有两个参数的递归函数的数据结构,其中一个是大的,另一个是小的
- pandas - 按字段填充先前的值 - Pandas 应用函数填充无
- python-3.x - 获取产生计算最大值的列表的值
- angular - 使用 *ngFor 从对象键中获取对象值
- linear-algebra - 在 Cirq 中分解量子电路
- php - 查询参数后从 URL 中删除 index.php,而不使用 .htaccess
- android - 如何使用 React Native V0.61 和 Expo 在 Android 上使用 flex 处理图像时溢出可见
- python - ImportError: libGL.so.1: 在 Linux 命令行中启动 anaconda 时无法打开共享对象文件
- c++ - 使用 std::string::erase 从字符串中删除起始字符