有关Microsoft框架的问题
有关于我的bot需要的用户的某些信息,但是我不希望用户自己提交它,因为
本质上,我的聊天机器人是嵌入在一个网页。该网页的每个会话中都有我需要提交给相应的聊天机器人控制器实例的信息,而不需要在聊天窗口中显示一个显式消息。
如何将信息传递给聊天机器人控制器?如果我需要对话Id来处理机器人,我如何在我的网页Javascripts中以编程的方式获得它?现在,我的聊天机器人已经与简单的iframe行集成到web页面中,可以在docs中找到它。
http://docs.botframework.com/connector/embed-chat-control/#navtitle
示例场景:我的聊天机器人是facebook页面上的聊天窗口。我需要聊天机器人知道用户是谁,例如,在没有提示的情况下说'Hello username‘
发布于 2016-06-14 15:31:42
在这种情况下,您必须创建自己的会话窗口,允许您发布并获取消息对象。
Index.html
<script src="script.js">
<ul class="chat" id="conversation">
</ul>
<input id="input-text" type="text" />
<button type="button" id="btn-send">Send</button>script.js
$('#btn-send').click(function () {
// Convert text to Message object
var message = {
text: $('#input-text').val(),
type: "Message"
};
// Create outgoing message html and add to list
var htmlOutgoing = "<li>" + message.text + "</li>";
$('#conversation').append(html);
$.ajax({
url: 'api/Messages/Post', // Change to your proper url
dataType: "json",
type: "POST",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(message),
async: true,
processData: false,
cache: false,
success: function (data) {
// Create incoming message html and add to list
var htmlIncoming = "<li>" + data.text + "</li>";
$('#conversation').append(htmlIncoming);
},
error: function (xhr) {
alert('error');
}
});
$('#text-input').val("");
})希望这能帮到你。
发布于 2019-06-14 22:10:11
我能够将用户ID和名称从web应用程序传递给嵌入在iframe中的C#。用户ID和名称可以像这样在iframe中传递(替换您的bot的URL和机密,以及您想传递的任何用户ID和名称:
<iframe src="https://webchat.botframework.com/embed/assistant-bot?s=[bot_secret]&userid=[user_id]&username=[user_name]"></iframe>`在我的bot中,转身上下文用于访问用户ID和名称,并且在类OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)中的方法中可用,在类DialogBot.cs中在OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)中可用,在类QnABot.cs中在OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)中可用。
在这些方法中,turnContext.Activity.From.Id包含传入的用户ID,turnContext.Activity.From.Name包含传入的用户名。
我认为,如果您在下面发送给我的来自DirectLine的安全WebChat控制代码片段中嵌入了bot,那么机器人还应该能够以与上面相同的方式访问用户ID和用户名,但我还没有机会尝试它:
$.get('/api/token', function (token) {
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ token: token }),
userID: '[user_id]',
username: '[user_name]',
locale: 'en-us',
styleOptions: { hideUploadButton: true }
}, document.getElementById('webchat'));
}发布于 2016-06-14 11:37:05
Microsoft使用Message类在Bot和用户之间交换消息。它有着不同的特性。有一些是由框架填充的,并取决于框架。然而,很少有允许您控制会话状态的方法。
BotUserData、BotConversationData和BotPerUserInConversationData允许您交换动态数据。三个都有各自的意义。查看正式文件以获取详细信息。
若要获取有关不同频道的信息,请使用包含来自该频道(Facebook)的原始消息的ChannelData。
https://stackoverflow.com/questions/37804506
复制相似问题