标签: botframework

使用MicrosoftBot的FormBuilder跳过确认步骤

在填写表格之前,我不需要任何确认.但是,在FormBuilder类的以下Build()方法中有一个Confirm("这是你的选择吗?\n { }")*.

    public IForm<T> Build()
    {
        if (!_form._steps.Any((step) => step.Type == StepType.Field))
        {
            var paths = new List<string>();
            FormBuilder<T>.FieldPaths(typeof(T), "", paths);
            IFormBuilder<T> builder = this;
            foreach (var path in paths)
            {
                builder.Field(new FieldReflector<T>(path));
            }
            builder.Confirm("Is this your selection?\n{*}");
        }
        Validate();
        return this._form;
    }
Run Code Online (Sandbox Code Playgroud)

在调用build之后,有什么办法可以从生成的Form中删除这一步吗?

            var form =  new FormBuilder<QuestionYourThinking>()
            .OnCompletionAsync(async (context, state) =>
            {
                await context.PostAsync("L'exercice est maintenant terminé. A bientot !");
            })
            .Build();
Run Code Online (Sandbox Code Playgroud)

c# botframework

3
推荐指数
1
解决办法
1476
查看次数

BotFramework:使用Intent从对话框启动表单

关于Microsoft Bot Framework,我们都知道Microsoft提供的示例.然而,这些样品通常具有"单一用途",即Pizzabot仅用于订购比萨饼,等等.

事实上,我希望创造一个更复杂的Bot,它实际上回答了一系列事情.为此,我正在使用此MessageController创建一个"大厅"对话框,其中包含所有消息:

 return await Conversation.SendAsync(message, () => new LobbyDialog());
Run Code Online (Sandbox Code Playgroud)

在那个"Lobby"对话框中,我有一系列LUIS意图用于不同的事情,并且因为它根据意图选择任务,所以它工作得很好.

但是,对于更复杂的操作,我希望使用FormFlow机制,所以我可以使用像PizzaBot示例中的表单.问题是所有采样的"表单机器人"始终使用此消息控制器类型:

return Chain.From(() => new PizzaOrderDialog(BuildForm)
Run Code Online (Sandbox Code Playgroud)

并在同一个MessagesController中建立构建器流,如下所示:

var builder = new FormBuilder<PizzaOrder>();

        ActiveDelegate<PizzaOrder> isBYO = (pizza) => pizza.Kind == PizzaOptions.BYOPizza;
        ActiveDelegate<PizzaOrder> isSignature = (pizza) => pizza.Kind == PizzaOptions.SignaturePizza;
        ActiveDelegate<PizzaOrder> isGourmet = (pizza) => pizza.Kind == PizzaOptions.GourmetDelitePizza;
        ActiveDelegate<PizzaOrder> isStuffed = (pizza) => pizza.Kind == PizzaOptions.StuffedPizza;

        return builder
            // .Field(nameof(PizzaOrder.Choice))
            .Field(nameof(PizzaOrder.Size))
            .Field(nameof(PizzaOrder.Kind))
            .Field("BYO.Crust", isBYO)
            .Field("BYO.Sauce", isBYO)
            .Field("BYO.Toppings", isBYO)
            .Field(nameof(PizzaOrder.GourmetDelite), isGourmet)
            .Field(nameof(PizzaOrder.Signature), isSignature)
            .Field(nameof(PizzaOrder.Stuffed), isStuffed)
            .AddRemainingFields()
            .Confirm("Would you like …
Run Code Online (Sandbox Code Playgroud)

bots botframework

3
推荐指数
1
解决办法
3272
查看次数

使用botframework将字节数组显示为图像

我有一个用户上传的图片的字节数组.我需要使用Bot-frameworkSkype和其他频道上将此字节数组渲染为图像

botframework

3
推荐指数
1
解决办法
663
查看次数

如何获得用户名?

我正在创建一个简单的Skype聊天机器人.我注意到目录中的一些机器人可以引用我的用户名和/或名字/姓氏,而不需要机器人问.

如何在不询问用户的情况下在Skype(或任何其他频道)中检索用户的用户名?

botframework

3
推荐指数
2
解决办法
5032
查看次数

Microsoft Bot Framework未经授权的错误

我开始使用Microsoft Bot Framework,并尝试使用模拟器从入门教程运行非常基本的应用程序.当我发送消息时,我收到错误:401 Unauthorized

我做过的事情

我已更正模拟器中的URL以匹配应用程序的正确URL.已从模拟器字段中删除了APP ID和APP密码.

我假设我不需要担心https,因为我在本地运行(localhost).

c# artificial-intelligence chatbot botframework

3
推荐指数
1
解决办法
586
查看次数

401错误调用Microsoft Luis.ai编程API

在MICROSOFT AZURE支持团队的明确请求中询问此处.

我一直试图调用MS Luis.ai 程序化 API(bit.ly/2iev01n),并且每次请求都收到401未经授权的响应.这是一个简单的GET示例:https://api.projectoxford.ai/luis/v1.0/prog/apps/{appId}/entities?subscription-key={subscription_key}.

我从Luis.ai GUI(由API文档指定)提供我的appId,在这里:
Luis.ai应用程序设置应用程序ID

我从Azure提供我的订阅密钥(由API文档指定),在这里:
Azure控制台

来自上方的应用ID和订阅密钥与我用于成功点击查询API的内容完全相同(请参阅底部的注释).我的帐户是按需付费(不是免费的).

我在这里做错了吗?此API是否已弃用,移动,关闭或与文档不同步?

注意:我可以通过在线GUI操作我的模型,但这种方法对我们的业务需求来说太过手动,我们的模型需要在新业务实体出现时以编程方式更新.

注意:程序化API与具有此请求URL的查询API不同,这对我来说很好:
https://api.projectoxford.ai/luis/v2.0/apps/{appId}?subscription-key={subscription_key}&verbose=true&q={utterance}

注意:似乎没有适用于v2.0的Luis.ai编程API - 这就是查询和编程API的URL具有不同版本的原因.

azure chatbot azure-machine-learning-studio botframework azure-language-understanding

3
推荐指数
1
解决办法
1011
查看次数

如何在本地托管.Net Bot应用程序

我们有一个客户端要求,Bot应用程序应该托管在本地,所有的Web聊天通信都直接进入Web服务器.我打算开发一个Bot .Net应用程序并配置网络聊天频道.我想知道是否可以在本地配置Bot应用程序

  1. 如何在本地设置网络聊天?
  2. 如何跳过Bot注册并避免邮件路由?
  3. 我是否必须构建服务来处理Web服务器中的所有请求和响应?
  4. 如果我使用网络聊天客户端数据是如何安全的以及僵尸服务如何将请求路由到Webapp?

如果我使用网络聊天,客户端数据是如何安全的以及机器人服务如何将请求路由到Webapp.

c# bots botframework

3
推荐指数
1
解决办法
1689
查看次数

为什么团队中的聊天机器人刷新卡不能刷新?

我正在我的聊天机器人中为我的团队频道提供O365连接器卡,以便用户使用HttpPost动作将数据发送回机器人.以下是用户保存时的示例调用消息:

{
    "name": "actionableMessage/executeAction",
    "type": "invoke",
    "timestamp": "2018-06-16T20:58:24.388Z",
    "localTimestamp": "2018-06-16T21:58:24.388+01:00",
    "id": "snip",
    "channelId": "msteams",
    "serviceUrl": "https://smba.trafficmanager.net/emea-client-ss.msg/",
    "from": {
        "id": "snip",
        "name": "my name",
        "aadObjectId": "snip"
    },
    "conversation": {
        "conversationType": "personal",
        "id": "long conversation id"
    },
    "recipient": {
        "id": "bot id",
        "name": "bot name"
    },
    "entities": [
        {
            "locale": "en-US",
            "country": "US",
            "platform": "Web",
            "type": "clientInfo"
        }
    ],
    "channelData": {
        "tenant": {
            "id": "tenant id"
        },
        "source": {
            "name": "message"
        }
    },
    "replyToId": "message id",
    "value": {
        "body": "{\"sportType\":\"1\", \"tournamentName\":\"FIFA Soccer …
Run Code Online (Sandbox Code Playgroud)

botframework microsoft-teams

3
推荐指数
1
解决办法
447
查看次数

Formflow机器人与枚举答案位置与答案文本混淆

我有一个表单流对话框,其中包含以下问题定义为枚举

public enum PreviousOwnerOptions
{
    [Describe("Owned from new")]
    [Terms("0", "new", ".*[O|o]wned from new")]
    OwnedFromNew = 0,

    [Terms("1", "One")]
    One,

    [Terms("2", "Two")]
    Two,

    [Terms("3", "Three")]
    Three,

    [Terms("4", "Four")]
    Four,

    [Terms("5", "Five")]
    Five,

    [Terms("6", "Six")]
    Six,

    [Describe("More than six")]
    [Terms(".*More than six", "more")]
    MoreThanSix
}
Run Code Online (Sandbox Code Playgroud)

以下是用户对问题的看法......

在此输入图像描述

我遇到的问题是,如果输入数字"3"作为答案,那么响应是这样的......

在此输入图像描述

看起来机器人不确定我的意思是在第3位或答案"三".我认为这个Terms属性可以解决这个问题吗?

我该如何解决这个问题?

botframework

3
推荐指数
1
解决办法
127
查看次数

如何发送1:1欢迎消息?

当用户安装我的Teams机器人时,我希望发送欢迎消息。

我查看了Teams API文档,并收到了有关是否应该这样做的混合消息。我已经在各个地方阅读了我的机器人在安装bot时应该收到的会话更新,以及阅读了各种我不会收到此类事件的问题。

但是,存在具有此功能的机器人。Hipmunk与私有作用域一起安装时,向我发送了一条消息,而没有进一步激怒。该机器人如何做到这一点,以及如何复制此功能?

谢谢

botframework microsoft-teams

3
推荐指数
1
解决办法
388
查看次数