Ответ - переместить вашу конечную точку API app.post
в файл index.js
, где ваш бот уже работает на сервере. Просто раскрутите новый «сервер» и «порт», чтобы сделать конечную точку доступной. Затем в вашем summaryStep
(axiosStep
в моем примере) сделайте вызов API, используя Axios, запрос-обещание или что у вас есть, для публикации ваших данных. При обращении к API данные передаются и обрабатываются.
В приведенном ниже коде при обращении к API переданные данные используются в sendActivity
, отправленном обратно в бот. В вашем случае ваши переданные данные будут использоваться для вызова базы данных, в котором вы можете использовать возвращенный ответ в sendActivity
.
. Ваш код будет выглядеть примерно так:Обратите внимание, что действия post
упрощены для примера. Вам необходимо обновить действия публикации, чтобы выполнять запросы mySql. В этом примере также используется restify для сервера (стандартно для ботов Bot Framework) и используется тот же порт, что и у бота, но его можно легко обновить, чтобы использовать Express и / или другой порт.
Надежда на помощь!
index.js
[...]
const conversationReferences = {};
const bodyParser = require('body-parser');
server.post('/id', async (req, res) => {
const { conversationID, data, name } = req.body;
const conversationReference = conversationReferences[ conversationID ];
await adapter.continueConversation(conversationReference, async turnContext => {
var reply = `${ data }. Thanks, ${ name }`;
await turnContext.sendActivity(reply);
});
res.writeHead(200);
res.end();
});
mainDialog.js
async axiosStep ( stepContext ) {
const conversationID = stepContext.context.activity.conversation.id;
try {
const response = await axios.post(`http://localhost:3978/id`, {
data: "Yeah! Record inserted",
name: "Steve",
conversationID: conversationID
})
console.log(response);
} catch (error) {
console.log(error);
}
return stepContext.next();
}