Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Botframework 验证表单元素的结果并返回可选择的多个选项(即地址验证)_Botframework - Fatal编程技术网

Botframework 验证表单元素的结果并返回可选择的多个选项(即地址验证)

Botframework 验证表单元素的结果并返回可选择的多个选项(即地址验证),botframework,Botframework,我正在寻找一个示例来执行以下操作: 机器人请求完整地址 Bot调用Bing空间服务并返回一个或多个地址 如果有多个响应,bot会列出这些响应,并让用户选择正确的响应 现在,我正在FormBuilder的确认中为该特定类属性执行此操作(这只允许我选择“最佳”地址): 返回新的FormBuilder() ... .字段(名称(地址)) .确认(异步(状态)=> { var addresses=await AddressHelper.ParseUserInput(state.Address);//

我正在寻找一个示例来执行以下操作:

  • 机器人请求完整地址
  • Bot调用Bing空间服务并返回一个或多个地址
  • 如果有多个响应,bot会列出这些响应,并让用户选择正确的响应
现在,我正在FormBuilder的确认中为该特定类属性执行此操作(这只允许我选择“最佳”地址):

返回新的FormBuilder()
...
.字段(名称(地址))
.确认(异步(状态)=>
{
var addresses=await AddressHelper.ParseUserInput(state.Address);//调用Bing空间服务到地理编码地址
var oldAddr=“”;
var newAddr=“”;
if(addresses.resourceSets.Any())
{
if(addresses.resourceSets.First().resources.Any())
{
oldAddr=state.Address;
newAddr=addresses.resourceSets.First().resources.First().address.formattedAddress;
state.Address=newAddr;
}
}
return new prompattribute($“您输入的地址是**{oldAddr}**,我们进行了地址验证,发现以下地址**{newAddr}**;是否正确?如果不正确,请键入**back**并重新输入您的地址,如果看起来不错,请输入**yes**”);
})

您想在FormFlow中执行此操作,还是对其他方法持开放态度?您可以在字段上使用验证回调-如果Bing Spatial只为地址返回一个结果,那么您将返回一个有效响应,如果有多个结果,您可以返回一个无效响应,并显示一条消息“我找到了以下可能的地址-请尝试输入其中一个,而不是[address 1]或[address 2]“然后,它将为您提供足够的信息来选择正确的地址。您是想在FormFlow中执行此操作,还是愿意使用其他方法?您可以对字段使用验证回调-如果Bing Spatial仅为地址返回一个结果,则您将返回一个有效的响应,如果有多个结果,您可以返回一个无效响应,并显示一条消息:“我找到了以下可能的地址-请尝试输入其中一个,而不是[address 1]或[address 2]”,这将为您提供足够的信息以选择正确的地址。
        return new FormBuilder<ReportImpairment>()
                ...
                .Field(nameof(Address))
                .Confirm(async (state) =>
                {
                    var addresses = await AddressHelper.ParseUserInput(state.Address);  // calls Bing Spatial Services to Geo Code address
                    var oldAddr = "";
                    var newAddr = "";
                    if (addresses.resourceSets.Any())
                    {
                        if (addresses.resourceSets.First().resources.Any())
                        {
                            oldAddr = state.Address;
                            newAddr = addresses.resourceSets.First().resources.First().address.formattedAddress;
                            state.Address = newAddr;
                        }
                    }
                    return new PromptAttribute($"The address you entered was **{oldAddr}**, we did an address validation and found the following address **{ newAddr }**; is this correct?  If not type **back** and re-enter your address, if it looks good enter **yes**");
                })