Я не уверен точно, как функционирует ваш виджет, но когда пользователь отправляет боту сообщение «помощь», вы можете отправить событие обратного канала в WebChat, чтобы инициировать открытие виджета.Посмотрите на фрагменты кода ниже.
Код бота - NodeJs
Когда бот получает сообщение «Помощь» от пользователя, бот может отправить событиеотправив действие с типом, установленным в «событие».Мы также можем присвоить исходящей активности имя атрибута, чтобы мы могли отправлять несколько типов событий в WebChat.В этом случае мы назовем исходящее действие helpEvent.
async onTurn(turnContext) {
if(turnContext.activity.type === ActivityTypes.Message) {
if (turnContext.activity.text.toLowerCase() === 'help') {
// Send Back Channel Help Event
await turnContext.sendActivity({ type: 'event', name: 'helpEvent'});
}
...
}
}
WebChat Custom Middleware
В WebChat мы собираемся создатьпользовательское промежуточное ПО для проверки входящих действий.Когда мы сталкиваемся с действием, которое имеет имя и тип, который мы узнаем, запустите ваше событие на веб-странице.В приведенном ниже примере я только что предупредил об использовании, которое они попросили о помощи, но здесь вы запускаете свой виджет.
const store = window.WebChat.createStore(
{},
({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
const { name, type } = action.payload.activity;
if (type === 'event' && name === 'helpEvent') {
// Activate Widget
alert("You asked for help.");
}
}
return next(action);
}
);
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ token }),
store,
}, document.getElementById('webchat'));
Для получения дополнительной информации о событиях в обратном канале и создания пользовательского промежуточного программного обеспечения в WebChat, проверьте этот пример в репо WebChat.
Надеюсь, это поможет!