Отправить сообщение, если внешний вызов API успешен в Bot Framework - PullRequest
0 голосов
/ 04 апреля 2019

Я делаю внешний пост-вызов API REST из Bot Framework.Если статус вызова 200 (ОК), то мне нужно отправить «Запрос API успешно», иначе «Запрос API не выполнен».

Пример кода:

Xyz.js

module.exports.Xyz = function Xyz(params) {

   request.get(`url`,
     function (error, response, body) {


       if (response.statusCode !== 200) {
        //
         return await step.context.sendActivity(`API Request Failed`);
        }
       var jobSubmitted = JSON.parse(response.body);

         return await step.context.sendActivity(`API Request Success`);
      }); 

}

index.js i have below function

  async sendMessage(step){

         Xyz.Xyz();

         return await step.endDialog();
     }

В настоящее время я получаю сообщение об ошибке «Ожидание действует только в асинхронной функции».

Фактическое ожидание 1) Бот должен дождаться ответа службы REST, а затем отправить сообщение.

Я совершенно новичок в Node JS и Bot Framework.Я ищу хороший подход для достижения этой цели.

1 Ответ

0 голосов
/ 08 апреля 2019

Согласно приведенной выше ошибке, вы не можете использовать оператор await внутри функции, которая не объявлена ​​как асинхронная. Поэтому, если этот код находится внутри функции, сделайте эту функцию асинхронной.

Правильная реализация:


module.exports.Xyz =  function Xyz(params) {

   request.get(`url`,
   async function (error, response, body) {


       if (response.statusCode !== 200) {

         return await step.context.sendActivity(`API Request Failed`);
        }
       var jobSubmitted = JSON.parse(response.body);

         return await step.context.sendActivity(`API Request Success`);
      }); 

}



  async function sendMessage(step){

         Xyz.Xyz();

         return await step.endDialog();
     }

Вы можете получить лучшее представление об асинхронных функциях здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...