C#BotFramework FormFlow,将值传递给外部api

时间:2017-06-19 12:24:05

标签: c# botframework

我目前正在开发一个简单的c#formflow bot,它捕获值并将这些值发送到外部api,从外部api获取json数据,并根据返回的结果创建Card Attachments。我正在调用OnCompletion委托中的外部api,如下所示,为了保持简单,我没有将任何值传递给api(用于测试目的)

 .OnCompletion(async (context, profileForm) =>
                {
                    var reply = context.MakeMessage();

                    var carsFromApi = await GetCarsAsync("/api/values");
                    reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
                    reply.Attachments = GetCards(carsFromApi);

                    await context.PostAsync(reply);

                    // Tell the user that the form is complete
                })

我打电话给api并将结果存储在" carsFromApi" ,我进入下面的代码片段

private static async Task<List<Car>> GetCarsAsync(string path)
        {
            List<Car> car = new List<Car>();
            HttpResponseMessage response = await client.GetAsync(path);
            if (response.IsSuccessStatusCode)
            {
                car = await response.Content.ReadAsAsync<List<Car>>();
            }

            return await response.Content.ReadAsAsync<List<Car>>();
        }

问题是当我按下F10然后转到下一行,即&#34; reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;&#34;。存储汽车的局部变量&#34; carsFromApi&#34;现在为空。这是它全部崩溃的部分。我不能通过这个&#34; carsFromApi&#34; to&#34; reply.Attachments = GetCards(carsFromApi);&#34;我试图将数据存储在私有变量中,但似乎也是null。外部api正在运行,因为它现在只返回一个静态文本列表。有任何想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

根据您所描述的内容,您的代码不会通过if (response.IsSuccessStatusCode)的路径存在。检查是否达到了这一点,因为我怀疑是异常或者请求出了问题。

或者,您可以尝试在调用ResumeAfter<T>时指定的Form方法中执行请求,而不是OnCompletion代理

中的请求