Я пытаюсь подключить Google Home к внешнему чат-боту с помощью actionssdk.У меня есть API, который принимает пользовательские входные данные и отправляет их в мой чат-бот с помощью webhook, но мой чат-бот отвечает асинхронно, вызывая другую конечную точку моего API, и я не могу показать ответ в действиях в Google или Google Home.
Я создаю actionssdkApp.
const {
actionssdk,
SimpleResponse,
Image,
} = require('actions-on-google');
var app = actionssdk();
var express_app = express();
Мой API имеет 2 конечные точки.Одним из них является действие в google по отправке пользовательских входов в мой чат-бот:
app.intent('actions.intent.MAIN', conv => {
console.log('entra en main');
conv.ask('Hi, how is it going?');
});
app.intent('actions.intent.TEXT', (conv, input) => {
var userId = conv.body.user.userId;
console.log(userId);
if(userId && input){
textFound(conv, input, userId);
}else{
textnotFound(conv);
}
});
Функция TextFound отправляет пользовательские входы в мой чат-чат с помощью webhook, но запрос не получает ответ.Мой чат-бот вызывает другую конечную точку с текстом ответа:
express_app.post('/webhook', bodyParser.json(), (req, res)=>{
console.log("Webhook");
const userId = req.body.userId;
if (!userId) {
return res.status(400).send('Missing User ID');
}
console.log(req.body);
res.sendStatus(200);
});
И вот здесь я хочу отправить ответ в Google Home.Но мне нужен объект conv, чтобы показать ответ в Google Home, или действия в Google, или на любом другом устройстве.
Редактировать:
Моя textFound
функция:
webhook.messageToBot(metadata.channelUrl, metadata.channelSecretKey, userId, input, function(err){
if(err){
console.log('Error in sending message');
conv.ask("Error in sending message");
}else{
conv.ask("some text");
}
});
Отсюда мой API отправляет пользовательские входные данные моему боту через функцию messageToBot
:
request.post({
uri: channelUrl,
headers: headers,
body: body,
timeout: 60000,
followAllRedirects: true,
followOriginalHttpMethod: true,
callback: function(err, res, body) {
if (err) {
console.log('err: '+err);
callback(err);
} else {
console.log('Message sent');
callback(null);
}
}
});
С этого момента мой бот не отправляет ответ, а звонит на конечную точку /webhook
мой API с ответом.Но в этой функции у меня нет объекта de conv, и я не могу отправить ответ в Google.Я не знаю, как получить доступ к этому объекту.Может быть, есть URI для подключения к моему проекту в действиях на Google из моего API.