Я пытаюсь ответить на вызов в командах, но на самом деле я не получаю ответ от бота.
Сначала я получаю access_token от Graph API.
Затем у меня есть маршруткоторый перехватывает вызовы ботов.
app.post("/api/call", function(req, res) {
if (j === 1) {
j = j + 1;
res.status(204).send();
} else {
var answerbody = {
callbackUri: "https://8a73b7ad.ngrok.io/api/call",
acceptedModalities: ["audio"],
mediaConfig: {
"@odata.type": "#microsoft.graph.serviceHostedMediaConfig",
preFetchMedia: [
{
uri: "https://cdn.contoso.com/beep.wav",
resourceId: "1D6DE2D4-CD51-4309-8DAA-70768651088E"
},
{
uri: "https://cdn.contoso.com/cool.wav",
resourceId: "1D6DE2D4-CD51-4309-8DAA-70768651088F"
}
]
}
};
POST(
"https://graph.microsoft.com/beta/" + req.body.resource + "/answer",
answerbody
)
.then(
data => console.log(data) // I get undefined
)
.catch(function(err) {
console.log("err " + err);
res.status(200).send();
});
}
});
Вот функция POST
function POST(url, BB) {
return new Promise(function(resolve, reject) {
var options = {
url: url,
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer " + token
},
body: BB,
json: true
};
request(options)
.then(function(body) {
resolve(body);
})
.catch(function(err) {
reject(err);
});
});
}
Как упомянуто в документации , сервер должен сначала ответить 204, чтобы получить ответ в Graph APIпротокол.
На самом деле я не получаю ответ.Бот продолжает звонить до тех пор, пока не получит голосовое сообщение: «Вы еще не можете поговорить с ботом, мы работаем над ним».
Как уже упоминалось в Документация API команд , я должен получитьобратный вызов с идентификатором ресурса и другой информацией, позволяющей ответить на вызов.
Поэтому я использую функцию POST
для ответа.но здесь я не получаю никакого ответа 202 Accepted
, как указано в документации, вместо этого я получаю более одного обратного вызова с разными идентификаторами ресурсов, а затем через несколько секунд я получаю голосовое сообщение.