如何使用异步功能修复“意外令牌”错误

时间:2019-01-16 23:57:47

标签: node.js azure botframework luis azure-function-async

我正在azure(v3)上开发一个Web应用程序机器人,并且正在使用异步方法,但是我似乎无法解决SyntaxError:意外令牌功能的问题。

我尝试将nodeJS从6.9.4更新到8.9,但这没有用。我还运行了npm i -g azure-functions-core-tools @ core,但还是没有。

class OAuthHelpers {
/**
 * Enable the user to schedule meeting and send an email attachment via the bot.
 * @param {TurnContext} turnContext 
 * @param {TokenResponse} tokenResponse 
 * @param {*} emailAddress The email address of the recipient
 */

async function createevent(turnContext, tokenResponse, emailAddress) {
    if (!turnContext) {
        throw new Error('OAuthHelpers.createevent(): `turnContext` cannot be undefined.');
    }
    if (!tokenResponse) {
        throw new Error('OAuthHelpers.createevent(): `tokenResponse` cannot be undefined.');
    }


    var client = new SimpleGraphClient(tokenResponse.token);

    // Calls the Graph API with the subject and content message...
    await client.createevent(
        emailAddress,
        `Lunch`,
        `I will be taking everyone to lunch as a reward for your hardwork.`
    );

    // Success message...
    await turnContext.sendActivity(`Success! I have scheduled a meeting with you and ${ emailAddress } have created an event on each of their calendars.`);
    } 

我希望机器人正常运行,但不能这样做,因为azure由于某种原因无法检测到异步功能。感谢您的帮助

1 个答案:

答案 0 :(得分:0)

OAuthHelpers类需要“ simple-graph-client”,其中包含您要使用的所有方法。在您的代码来自BotBuilder-Sample 24.bot-authentication-msgraph的原始示例中,如果导航到simple-graph-client.js文件,则将在其中看到名为(即sendMail,getRecentMail,getMe和getManager)的方法。 OAuthHelpers.js文件。

如果还没有,则需要包括一个创建事件的方法。继而在bot对话框中从OAuthHelpers.js文件中调用该文件。

如果没有更多代码,很难知道什么是什么,但是我猜是令牌已传递到您的createevent方法中,但是由于该方法(可能)不以图形api调用的形式存在,因此它不知道该怎么办。

查看以下链接以获取指导:

  • MS图形sample显示了对前3个日历事件的GET调用
  • MS图形单元测试example,但演示了事件POST
  • 用于创建事件的API reference
  • 添加info来创建重复发生的事件……可能很有用

希望有帮助!