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