首页 > 解决方案 > BotFramework TurnContext SendActivityAsync“对象引用未设置为对象的实例”

问题描述

我正在尝试在 Azure Functions Powershell 中使用 botframework v4。我只需调用原始 REST API 并使用像 Activity 这样的 botframework 类型,就可以成功地完成这项工作。

现在我正在尝试正确使用框架和适配器。但是,当我在 Turn Context 上调用 SendActivityAsync 时,我得到“对象引用未设置为对象的实例”,并且真的无法找出它的来源。

这里有什么明显遗漏的东西,或者我遗漏了另一种使用 BotFrameWork 适配器的方法吗?我正在尝试使 EchoBot 示例适应 Powershell,因为 ConsoleBot 示例不会将 http 回调到 bot 框架。

假设 Activity 是真实的,我知道这不是我的 null 的来源(如果是的话,它不会让我创建 turncontext)

    $activity = [JsonConvert]::DeserializeObject(($QueueItem -replace '^---JSON---',''), [activity])

    #Only Process Message Activities for now
    if ($activity.Type -ne 'message') {return}

    $reply = $activity.CreateReply("I got your message that says $($activity.text)")

    $appCredentials = [MicrosoftAppCredentials]::new('c28d55e3-fb0b-4367-b4a6-f00959a54e5b','n=_y:3LsJo/MYAPPSECRETP5')
    $botFrameworkAdapter = [BotFrameworkAdapter]::new($appCredentials, [AuthenticationConfiguration]::new())
    $turnContext = [TurnContext]::new($botFrameworkAdapter, $Activity)
    $turnContext.SendActivityAsync($reply).GetAwaiter().GetResult()

标签: botframework

解决方案


推荐阅读