Вы можете добавить пользовательское промежуточное ПО в хранилище Web Chat, которое может отправлять событие, содержащее необходимые данные, боту, когда установлено соединение DirectLine. См. Фрагменты кода ниже.
Веб-чат
const store = window.WebChat.createStore({},
({ dispatch }) => next => action => {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
// Send event to bot with custom data
dispatch({
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'webchat/join',
value: { data: { username: 'TJ'}}
}
})
}
return next(action);
});
window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ token }),
store,
}, document.getElementById('webchat'));
Бот - C # SDK
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
using Newtonsoft.Json.Linq;
namespace Microsoft.BotBuilderSamples.Bots
{
public class EchoBot : ActivityHandler
{
protected override async Task OnEventAsync(ITurnContext<IEventActivity> context, CancellationToken cancellationToken)
{
if (context.Activity.Name == "webchat/join") {
var data = JObject.Parse(context.Activity.Value.ToString()).GetValue("data");
var user = JObject.Parse(data.ToString()).GetValue("username");
await context.SendActivityAsync($"Hi, {user}!");
}
}
}
}
Более подробную информацию можно получить на Приветственном событии Send Backchannel Пример веб-чата.
Надеюсь, это поможет!