我希望能够通过删除本地文件来触发我的SharePoint在线网站上的机器人。
我创建了一个WebPart以在网站上使用此bot,并将Azure的嵌入代码放入。
但是当我在机器人中删除文件时,它会在新标签中打开文档,向我显示内容。
我想在删除这样的文件时开始对话: Start of bot conversation by putting a file
我想通过在包含机器人的iframe上使用放置区来想象一些解决方案,但它无效。
我访问了一些可以提供帮助的网站,但我真的不知道如何实现这一点:Bot in WebChat,DirectLine API,Send Activity to the bot
此GitHub也可能有用。
答案 0 :(得分:0)
您需要处理ondragover和ondrop事件(取消默认行为)并手动发布活动:
HTML:
<div id="bot" ondrop="drop_handler(event);" ondragover="dragover_handler(event);" />
使用Javascript:
const dl = new BotChat.DirectLine({
secret: 'YourDLSecret',
webSocket: false
});
BotChat.App({
botConnection: dl,
user: { id: 'userid' },
bot: { id: 'botid' },
resize: 'detect'
}, document.getElementById("bot"));
function dragover_handler(ev) {
console.log("dragOver");
ev.preventDefault();
}
function drop_handler(ev) {
console.log("Drop");
ev.preventDefault();
ev.stopPropagation();
var files = [];
for (var i = 0; i < ev.dataTransfer.items.length; i++) {
// If dropped items aren't files, reject them
if (ev.dataTransfer.items[i].kind === 'file') {
var file = ev.dataTransfer.items[i].getAsFile();
files.push({
contentType: file.type,
contentUrl: window.URL.createObjectURL(file),
name: file.name
});
}
}
dl.postActivity({
from: { id: 'userid' },
type: 'message',
attachments: files
})
.subscribe(function (id) {
console.log('files sent');
});
}