在Bot Framework中成功调用外部API时发送消息

时间:2019-04-04 20:42:38

标签: rest azure api botframework chatbot

我正在从Bot Framework进行外部REST API调用。如果呼叫状态为200(OK),那么我需要发送“ 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 :(得分:0)

根据上述错误,您不能在未声明为异步的函数中使用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();
     }

您可以更好地了解异步功能here