Javascript 在向bot触发消息之前,问候消息不会显示
我正在尝试发送问候信息并询问用户的姓名。机器人试图向用户询问一些问题,然后通过重定向链接帮助他。它在emulator或Microsoft online测试工具中工作得非常完美,但一旦将bot集成到ASP.NET应用程序中,问候语就不会显示Javascript 在向bot触发消息之前,问候消息不会显示,javascript,botframework,chatbot,web-chat,Javascript,Botframework,Chatbot,Web Chat,我正在尝试发送问候信息并询问用户的姓名。机器人试图向用户询问一些问题,然后通过重定向链接帮助他。它在emulator或Microsoft online测试工具中工作得非常完美,但一旦将bot集成到ASP.NET应用程序中,问候语就不会显示 $.ajax({ url: 'https://directline.botframework.com/v3/directline/tokens/generate', method: "POST"
$.ajax({
url: 'https://directline.botframework.com/v3/directline/tokens/generate',
method: "POST",
headers: {
"Authorization": "Bearer SECRET GOES HERE"
},
}).then(function (response) {
const { token } = JSON.parse(JSON.stringify(response));
const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: { language: window.navigator.language }
}
});
}
return next(action);
});
window.WebChat.renderWebChat(
{
directLine: window.WebChat.createDirectLine({ token }),
store
},
document.getElementById('chatBotFrame')
);
document.querySelector('#chatBotFrame > *').focus();
}).catch(function (err) {
console.error(err);
});
我已经搜索并找到了一些有用的链接,但我仍然无法解决这个问题
我尝试了两种不同的方法,iframes
和window.WebChat.renderWebChat
,但在这两种情况下都会出现问题,在我向bot发送消息之前,问候消息不会显示
正如在其他帖子中所讨论的,所有的解决方案都到此为止,因此聊天机器人的集成必须在javascript或Node中实现;并且,需要向聊天机器人发送一个自定义事件(作为触发器)。但是,虽然我的bot已部署在个人windows服务器上,但我不知道如何配置它并设置directLine
参数
正如已经发布的,可能的解决方案如下代码所示,但我无法配置和设置获取令牌所需的参数
消息传递端点:
网络聊天:发送欢迎活动
html,
身体{
身高:100%;
}
身体{
保证金:0;
}
#网络帽{
身高:100%;
宽度:100%;
}
(异步函数(){
//我不知道这行代码必须如何设置才能实现令牌
//------------------------------------------------------
const res=等待取数('https://xxx.yyy.com/directline/token“,{方法:'POST'});
const{token}=await res.json();
//------------------------------------------------------
const store=window.WebChat.createStore({},({dispatch})=>next=>action=>{
如果(action.type==='DIRECT\u LINE/CONNECT\u completed'){
派遣({
键入:“网络聊天/发送事件”,
有效载荷:{
名称:'webchat/join',
值:{language:window.navigator.language}
}
});
}
返回下一步(操作);
});
window.WebChat.renderWebChat(
{
directLine:window.WebChat.createDirectLine({token}),
商店
},
document.getElementById('webchat')
);
document.querySelector(“#webchat>*”).focus();
})().catch(err=>console.error(err));
最后,我必须强调,Bot在在线测试工具和模拟器上运行良好,但错误发生在asp.net应用程序的集成中
$.ajax({
url: 'https://directline.botframework.com/v3/directline/tokens/generate',
method: "POST",
headers: {
"Authorization": "Bearer SECRET GOES HERE"
},
}).then(function (response) {
const { token } = JSON.parse(JSON.stringify(response));
const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: { language: window.navigator.language }
}
});
}
return next(action);
});
window.WebChat.renderWebChat(
{
directLine: window.WebChat.createDirectLine({ token }),
store
},
document.getElementById('chatBotFrame')
);
document.querySelector('#chatBotFrame > *').focus();
}).catch(function (err) {
console.error(err);
});
截图:
左边的照片来自网站应用程序,右边的照片来自测试环境:
编辑(1):标题已更新,添加了屏幕截图。下面的代码修复了令牌生成和发送事件以触发web应用程序内的聊天机器人的问题
$.ajax({
url: 'https://directline.botframework.com/v3/directline/tokens/generate',
method: "POST",
headers: {
"Authorization": "Bearer SECRET GOES HERE"
},
}).then(function (response) {
const { token } = JSON.parse(JSON.stringify(response));
const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: { language: window.navigator.language }
}
});
}
return next(action);
});
window.WebChat.renderWebChat(
{
directLine: window.WebChat.createDirectLine({ token }),
store
},
document.getElementById('chatBotFrame')
);
document.querySelector('#chatBotFrame > *').focus();
}).catch(function (err) {
console.error(err);
});
不清楚你说的是什么,实际行为是什么。你的标题说有一个延迟,但在底部你说有一个错误。你可以发布你正在经历的截图吗?谢谢你的评论@KyleDelaney。我添加了所需的屏幕截图,并更新了描述以使其清晰。据我所知,模拟器中聊天机器人的行为是不同的,问候语不会显示,因为它需要触发自定义事件,我想我已经在上面发布的链接中找到了解决方案,我不知道如何使用javascript集成bot,也不完全确定参数。请看一下,了解令牌生成如何影响会话更新的时间。听起来好像在生成令牌的调用中没有包含用户属性。示例代码中包含了xxx.yyy.com。这是您托管的实际站点的占位符吗?端点调用是否生成令牌?我可以在屏幕截图中看到,您能够成功连接到Direct Line,因此您必须以某种方式获得令牌。xxx.yyy.com是机器人托管位置的占位符。我已经阅读了你在之前评论中提到的帖子。我当前的问题是:“”没有生成令牌。假设端点是,应该使用哪个url来检索令牌?为什么要尝试通过调用bot端点来生成直连令牌?您还没有回答我关于端点调用是否生成令牌的问题。如果它没有生成令牌,那么您如何连接到对话?您可以在这里阅读有关如何生成令牌的所有内容:我也有同样的问题。这对我有用。谢谢你Mahyar