Вот как вы можете запустить его, основываясь на этом примере веб-чата :
Добавление пользовательских ChannelData к исходящей активности (в коде бота)
См. этот образец для получения дополнительной информации.
var message = context.MakeMessage();
для отключения ввода
message.ChannelData = new { chatBox = "disable" }
для включения ввода
message.ChannelData = new { chatBox = "enable" }
Отправить сообщение
await context.PostAsync(message);
Создать событие для channelData.chatBox
(в тегах сценария index.html)
const store = window.WebChat.createStore(
{},
({ dispatch }) => next => action => {
if (action && action.payload && action.payload.activity && action.payload.activity.channelData && action.payload.activity.channelData.chatBox) {
const event = new Event(`chatBox`);
event.data = action.payload.activity.channelData.chatBox;
window.dispatchEvent(event);
}
return next(action);
}
);
Прослушатьсобытие и включить / отключить окно чата (в тегах сценария index.html)
window.addEventListener('chatBox', ({ data }) => {
const chatBox = document.querySelector(`[data-id="webchat-sendbox-input"]`);
switch(data){
case 'enable':
chatBox.disabled = false;
break;
case 'disable':
chatBox.disabled = true;
break;
}
});
Включено:
Отключено:
Просто убедитесь, что вы снова включили его после отключения по мере необходимости!
С BotChat
Это почти одно и то же.Вы сообщаете, что BotChat не обнаруживает все сообщения, поэтому я использовал события.
Создание / отправка событий
var disable = new Activity()
{
Type = ActivityTypes.Event,
Value = new { chatBox = "disable" }
};
var enable = new Activity()
{
Type = ActivityTypes.Event,
Value = new { chatBox = "enable" }
};
await turnContext.SendActivityAsync(disable);
Прослушивание событийв BotChat
botConnection.activity$
.subscribe(function (activity) {
if (activity.type === 'event' && activity.value.chatBox) {
controlInput(activity.value.chatBox);
}
});
function controlInput(action) {
const chatBox = document.querySelector(`[class="wc-shellinput"]`);
switch(action) {
case 'enable':
chatBox.disabled = false;
break;
case 'disable':
chatBox.disabled = true;
break;
}
}
Примечание. Если вы используете стандартную версию BotChat css, цвет ввода не изменится.Вам нужно будет добавить CSS самостоятельно.Что-то вроде:
input:disabled {
background-color: black !important;
}