MSTEAMS BOT - post 使用 rest api 发送给 personalChat 的消息 - 此请求的授权已被拒绝
MSTEAMS BOT - post message to personalChat using rest api - Authorization has been denied for this request
我的 objective 是 post 在 msteamsbot 中使用 restapi 端点在 personalChat
上发送消息。
使用以下逻辑生成身份验证令牌 (reference doc)
let url = "https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token";
const data = {
'grant_type': 'client_credentials',
'client_id' : '...',
'client_secret' : '...',
'scope' : 'https://api.botframework.com/.default'
};
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: qs.stringify(data),
url,
};
axios(options);
使用上述逻辑生成的令牌传递给下面api(reference doc)。此 api 应该 post 收件人聊天中的一条消息。但这并没有发生。
curl --location --request POST 'https://smba.trafficmanager.net/apis/v3/conversations/a:1NYEIhjRpL_RgDBDaA7lJyO6kl8rbpWQLyKkayQnZ_mKOZhnKAoeuiWEekt8vpjeoIcB3R394k6-zeC52sk60Q8ErZO5PIokS8ytjD-QK-CIJjIRaGg94KzTMz2d3XXjs/activities' \
--header 'Authorization: Bearer authToken' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "message",
"recipient": {
"id":"29:1dePA4jI3vyrUt-38_--KJxVeAg_v-XQVCBHcSxp4kgu7ZshPPSbsbSOZ7m-GAKK0IARbqyxg_bit-IAt0J9d_w"
},
"from": {
"id": "28:f4016730-f1ef-4fcd-9169-4159a2295591",
"name": "Toolkit Bot - vTAPBotdemo"
},
"channelData": {
"notification": {
"alert": "true"
}
},
"text": "Hello "
}'
下面是触发上述 api 时我收到的错误消息。
请让我知道如何解决这个问题
我用来在 personal
聊天中发布消息的端点不正确,它也出现在 docs 中。
下面是正确的端点。通过记录 /api/messages
api
的 http payload 请求体可以看到这个端点
curl --location --request POST 'https://smba.trafficmanager.net/amer/v3/conversations/{conversationid}/activities/{activityid}' \
--header 'Authorization: Bearer authToken' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "message",
"recipient": {
"id":"29:1dePA4jI3vyrUt-38_--VeAgKJx_v-CBHXQVcSxp4kgu7ZshPPSbsbSOZ7m-GAKK0IARbqyxg_bit-IAt0J9d_w"
},
"from": {
"id": "28:f4016730-f1ef-4fcd-9169-4159a2295591",
"name": "Toolkit Bot - vTAPBotdemo"
},
"channelData": {
"notification": {
"alert": "true"
}
},
"text": "Hello "
}'
我的 objective 是 post 在 msteamsbot 中使用 restapi 端点在 personalChat
上发送消息。
使用以下逻辑生成身份验证令牌 (reference doc)
let url = "https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token";
const data = {
'grant_type': 'client_credentials',
'client_id' : '...',
'client_secret' : '...',
'scope' : 'https://api.botframework.com/.default'
};
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: qs.stringify(data),
url,
};
axios(options);
使用上述逻辑生成的令牌传递给下面api(reference doc)。此 api 应该 post 收件人聊天中的一条消息。但这并没有发生。
curl --location --request POST 'https://smba.trafficmanager.net/apis/v3/conversations/a:1NYEIhjRpL_RgDBDaA7lJyO6kl8rbpWQLyKkayQnZ_mKOZhnKAoeuiWEekt8vpjeoIcB3R394k6-zeC52sk60Q8ErZO5PIokS8ytjD-QK-CIJjIRaGg94KzTMz2d3XXjs/activities' \
--header 'Authorization: Bearer authToken' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "message",
"recipient": {
"id":"29:1dePA4jI3vyrUt-38_--KJxVeAg_v-XQVCBHcSxp4kgu7ZshPPSbsbSOZ7m-GAKK0IARbqyxg_bit-IAt0J9d_w"
},
"from": {
"id": "28:f4016730-f1ef-4fcd-9169-4159a2295591",
"name": "Toolkit Bot - vTAPBotdemo"
},
"channelData": {
"notification": {
"alert": "true"
}
},
"text": "Hello "
}'
下面是触发上述 api 时我收到的错误消息。
我用来在 personal
聊天中发布消息的端点不正确,它也出现在 docs 中。
下面是正确的端点。通过记录 /api/messages
api
curl --location --request POST 'https://smba.trafficmanager.net/amer/v3/conversations/{conversationid}/activities/{activityid}' \
--header 'Authorization: Bearer authToken' \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "message",
"recipient": {
"id":"29:1dePA4jI3vyrUt-38_--VeAgKJx_v-CBHXQVcSxp4kgu7ZshPPSbsbSOZ7m-GAKK0IARbqyxg_bit-IAt0J9d_w"
},
"from": {
"id": "28:f4016730-f1ef-4fcd-9169-4159a2295591",
"name": "Toolkit Bot - vTAPBotdemo"
},
"channelData": {
"notification": {
"alert": "true"
}
},
"text": "Hello "
}'