我创建了一个简单的Android应用程序,它使用restfull jersey WS通过JSON格式发送消息
我应该在连接机器人的应用程序中输入哪个URL?
以及该机器人如何接收消息并发回响应?
截至目前,我正在使用微软的bot模拟器
提前致谢.
我喜欢僵尸框架,但我想扩展以支持数百个(如果不是数千个)Facebook页面都指向我的单个机器人实例.我的bot实例通过传入的页面ID区分功能,或者我想通过MSFT App/Secret ID.
该框架似乎要求MSFT托管的逻辑机器人与FB页面之间存在1:1的对应关系,但我的单个机器人实例可以处理数千个此类页面和应用程序.
看起来我可能需要为每个逻辑机器人页面创建一个唯一的ChatConnector和关联的UniversalBot实例.在我建议的规模上,这是非常低效的.
解决这个问题的一种方法可能是扩展UniversalBot以接受我创建的所有MSFT App和Secret ID的列表,但我还没有尝试过.在查看API之后,看起来可以使用单个UniversalBot实例注册更多连接器.
UniversalBot:
/**
* Registers or returns a connector for a specific channel.
* @param channelId Unique ID of the channel. Use a channelId of '*' to reference the default connector.
* @param connector (Optional) connector to register. If ommited the connector for __channelId__ will be returned.
*/
connector(channelId: string, connector?: IConnector): IConnector;
Run Code Online (Sandbox Code Playgroud)
但不确定我为channelId传递了什么,除非这是一个任意的唯一本地值.
我在这里查看了其他/类似的帖子,但没有找到我认为解决我的问题的具体内容.如果我弄错了,我道歉并希望得到参考.
我希望有人可能会有更好的主意.我正在使用Node btw.谢谢.
我希望创建一个机器人,并且遇到了Microsoft Bot Framework(使用LUIS或可以使用API.AI提供的C#SDK)和Howdy.ai Botkit(中间件支持LUIS和API.AI).
有人可以帮助我比较这两者吗?
我在我的机器人中寻找以下内容 -
有没有可以在一个而不是在另一个中的东西?
我看过很多文章建议不要使用默认的bot状态数据存储,因为微软肯定会在2018年3月关闭这项服务.
我目前正在开发无状态机器人,不需要任何存储空间.
我试图创造一个假的
internal class DummyDataStore : IBotDataStore<BotData>
{
public DummyDataStore()
{
}
public Task<bool> FlushAsync(IAddress key, CancellationToken cancellationToken)
{
return Task.FromResult(true);
}
public Task<BotData> LoadAsync(IAddress key, BotStoreType botStoreType, CancellationToken cancellationToken)
{
return Task.FromResult(new BotData());
}
public Task SaveAsync(IAddress key, BotStoreType botStoreType, BotData data, CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
Run Code Online (Sandbox Code Playgroud)
并在global.asax中使用autofac注册它
Conversation.UpdateContainer(
builder =>
{
//Registration of message logger
builder.RegisterType<BotMessageLogger>().AsImplementedInterfaces().InstancePerDependency();
//Registration of dummy data storage
var store = new DummyDataStore();
builder.Register(c => store).As<IBotDataStore<BotData>>().AsSelf().SingleInstance();
});
Run Code Online (Sandbox Code Playgroud)
但它似乎搞乱了上下文而bot并没有响应任何context.wait()方法
我也试过这个:
Conversation.UpdateContainer(
builder => …Run Code Online (Sandbox Code Playgroud) 我试图在Visual Studio 2015 Community Edition版本14.0.25123.00 .Net Framework 4.6.01038上关注Microsoft Bot Connector(http://docs.botframework.com/connector/getstarted/#navtitle)的说明,更新1然后2 ,zip存档已存储在相应的文件夹"%USERPROFILE%\ Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#"中,不幸的是,关联的模板没有出现在"Installed/Visual C#"类别中,试图创建一个新项目.是否有可能提供任何支持和/或建议?Thx,
有人可以澄清一下,我们是否可以在完全非 Azure/非云/非 Azurestack 的纯本地传统私有环境(位于非常严格的企业代理后面,没有使用内部本地 Skype For Business 通道在运行时访问 Azure/AWS/Internet ?如果是这样...是否有一个链接可以用来实现相同的目标(部署到 IIS?)。
我看了这个帖子:Bot Framework without Azure possible?
这似乎仍然需要互联网连接并在微软网站上注册机器人。如果这是一次性活动,那没问题,但我的 BOT 服务是否需要连接到该注册才能保持其正常运行?
到目前为止,我已经创建了一个 Hello World Bot,它可以使用 VS2017 和 Bot 模拟器正常工作(步骤:https: //learn.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-quickstart)。我多么想将其部署到我们的内部 Skype for Business 渠道,但目前尚不清楚它是否可以独立于任何 Azure/云服务运行。
提前非常感谢
我正在尝试在我们的网站上实施 Microsoft botframework 聊天机器人,但不想给不会使用 470Kb 库的机器人带来负担,除非他们选择开始聊天。
当框架包含在页面源中时,机器人会初始化并启动,但是当我从页面源中删除它并在用户单击按钮启动机器人时将其写入页面时,脚本将写入页面并可以在 DevTools 源代码中看到,但不会初始化。
我已经尝试了几种将初始化延迟到脚本下载之后的方法,但是无论脚本是本地托管还是来自 MS CDN https://cdn.botframework.com/botframework-webchat/latest/,这些方法都不起作用botchat.js。
即使在控制台中手动检查 BotChat 对象也会返回 BotChat 未定义。
页面加载后是否可以延迟加载框架?
http://demo.icaew.com/peter-gibb/global-front-end/html/corporate/berzerk.html
aws-lex 可以用来构建对话流机器人吗?
例如:
有没有办法在 aws-lex 中做这样的事情?
我尝试使用插槽/提示/lambda,但我无法进入图表中的第二或第三级深度。可以以某种方式完成吗?
非常感谢!
这一切的原因:所以我们有自己的“对话构建器”和“机器人服务”。我们自己的“对话生成器”:可能类似于 Amazon Connect 对话生成器,我们自己的“机器人服务”类似于 Microsoft 机器人框架。在我们使用 microsoft-luis 来获取句子的“意图”之前,同时使用我们自己的对话生成器和我们自己的机器人服务来构建对话/对话流程,例如如果用户说“是”,则转到另一个流程,如果用户说“不”然后转到不同的流程(这可以在槽中完成吗?)===二叉树:)
因此,现在我们正在从 luis 切换到 aws-lex,并尝试思考是否可以只使用 aws-lex UI 而不再使用我们的(对话构建器/机器人服务)。但我的理解是,要在没有某种对话生成器的情况下使用 aws-lex,如果它包含大量数据,我们需要编写大量 if/case 语句,对吗?你的建议是什么?一种方法是仅使用“Amazon Connect”来利用他们的对话生成器,这样我们就不必编写大量 if 语句,但如果我们使用对话生成器,我们可以只使用我们自己的(旧的)对话生成器吗?你怎么认为?
lambda aws-lambda botframework azure-language-understanding aws-lex
我们正在使用连接到Azure 机器人服务的QnA Maker。在知识库 (KB) 中,我们为每个问题添加了一个跟进提示:This did NOT answer my question
这意味着如果提供了错误的响应,最终用户可以指出,对话历史将如下所示:
我们要做的是重播对话历史,以便我们可以看到:
我们打开了Application Insights,因此我们可以通过以下查询从日志中看到这两个问题:
traces
| project timestamp,
itemId,
question = customDimensions.Question,
answer = customDimensions.Answer
| order by timestamp
Run Code Online (Sandbox Code Playgroud)
这将返回这两行:
但是,我们正在尝试找到可以关联这两个记录的唯一对话 ID 或会话 ID。请注意,itemId非常相似,但不完全相同:
53be8c14-702c-11ea-8c41-11c1c266dc55
53be8c13-702c-11ea-8c41-11c1c266dc55Run Code Online (Sandbox Code Playgroud)
一种解决方法是仅使用 的前 7 位数字itemID并基于该部分匹配进行连接,如下所示:
traces
| where customDimensions.Question contains "This did NOT answer my question"
| project itemId,
SessionID = extract("^[a-z0-9]{7}", 0, itemId),
timestamp …Run Code Online (Sandbox Code Playgroud) 我正在尝试开始预定的主动对话(机器人在预定时间启动对话)。我设法根据 Graph API 获取用户的 AAD ID,但它与 Teams 用户 ID 不匹配。尝试了两个多小时才获得正确的ID,但我不知道如何获得。我应该采取的最佳方法是什么?
botframework ×10
bots ×2
c# ×2
aws-lambda ×1
aws-lex ×1
azure ×1
azure-language-understanding ×1
botkit ×1
javascript ×1
kql ×1
lambda ×1
node.js ×1