in public/index.js [62:156]
function initBotConversation() {
if (this.status >= 400) {
alert(this.statusText);
return;
}
// extract the data from the JWT
const jsonWebToken = this.response;
const tokenPayload = JSON.parse(atob(jsonWebToken.split('.')[1]));
const user = {
id: tokenPayload.userId,
name: tokenPayload.userName,
locale: tokenPayload.locale
};
let domain = undefined;
if (tokenPayload.directLineURI) {
domain = "https://" + tokenPayload.directLineURI + "/v3/directline";
}
let location = undefined;
if (tokenPayload.location) {
location = tokenPayload.location;
} else {
// set default location if desired
/*location = {
lat: 44.86448450671394,
long: -93.32597021107624
}*/
}
var botConnection = window.WebChat.createDirectLine({
token: tokenPayload.connectorToken,
domain: domain
});
const styleOptions = {
botAvatarImage: 'https://docs.microsoft.com/en-us/azure/bot-service/v4sdk/media/logo_bot.svg?view=azure-bot-service-4.0',
// botAvatarInitials: '',
// userAvatarImage: '',
hideSendBox: false, /* set to true to hide the send box from the view */
botAvatarInitials: 'Bot',
userAvatarInitials: 'You',
backgroundColor: '#F8F8F8'
};
const store = window.WebChat.createStore({}, function(store) { return function(next) { return function(action) {
if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
store.dispatch({
type: 'DIRECT_LINE/POST_ACTIVITY',
meta: {method: 'keyboard'},
payload: {
activity: {
type: "invoke",
name: "InitConversation",
locale: user.locale,
value: {
// must use for authenticated conversation.
jsonWebToken: jsonWebToken,
// Use the following activity to proactively invoke a bot scenario
/*
triggeredScenario: {
trigger: "{scenario_id}",
args: {
location: location,
myVar1: "{custom_arg_1}",
myVar2: "{custom_arg_2}"
}
}
*/
}
}
}
});
}
else if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
if (action.payload && action.payload.activity && action.payload.activity.type === "event" && action.payload.activity.name === "ShareLocationEvent") {
// share
getUserLocation(function (location) {
store.dispatch({
type: 'WEB_CHAT/SEND_POST_BACK',
payload: { value: JSON.stringify(location) }
});
});
}
}
return next(action);
}}});
const webchatOptions = {
directLine: botConnection,
styleOptions: styleOptions,
store: store,
userID: user.id,
username: user.name,
locale: user.locale
};
startChat(user, webchatOptions);
}