forked from microsoft/BotFramework-WebChat
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.html
More file actions
102 lines (90 loc) · 3.73 KB
/
index.html
File metadata and controls
102 lines (90 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!doctype html>
<html lang="en-US">
<head>
<title>Web Chat: Customize activity status</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--
For simplicity and code clarity, we are using Babel and React from unpkg.com.
-->
<script crossorigin="anonymous" src="https://unpkg.com/@babel/standalone@7.8.7/babel.min.js"></script>
<script crossorigin="anonymous" src="https://unpkg.com/react@16.8.6/umd/react.development.js"></script>
<script crossorigin="anonymous" src="https://unpkg.com/react-dom@16.8.6/umd/react-dom.development.js"></script>
<!--
This CDN points to the latest official release of Web Chat. If you need to test against Web Chat's latest bits, please refer to using Web Chat's latest bits:
https://github.com/microsoft/BotFramework-WebChat#how-to-test-with-web-chats-latest-bits
-->
<script crossorigin="anonymous" src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
<style>
html,
body {
height: 100%;
}
body {
margin: 0;
}
#webchat {
height: 100%;
width: 100%;
}
.activityStatus {
color: #767676;
font-family: Calibri, 'Helvetica Neue', Arial, sans-serif;
}
.activityStatus__sendStatus,
.activityStatus__timestampPretext {
font-size: 80%;
}
.activityStatus__timestampContent {
text-transform: lowercase;
}
</style>
</head>
<body>
<div id="webchat" role="main"></div>
<script type="text/babel" data-presets="es2015,react,stage-3">
(async function () {
// In this demo, we are using Direct Line token from MockBot.
// Your client code must provide either a secret or a token to talk to your bot.
// Tokens are more secure. To learn about the differences between secrets and tokens
// and to understand the risks associated with using secrets, visit https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-authentication?view=azure-bot-service-4.0
const res = await fetch(
'https://hawo-mockbot4-token-app.blueriver-ce85e8f0.westus.azurecontainerapps.io/api/token/directline',
{ method: 'POST' }
);
const { token } = await res.json();
const { ReactWebChat } = window.WebChat;
const activityStatusMiddleware = () => next => args => {
const {
activity: {
from: { role }
},
hideTimestamp,
sendState
} = args;
if (sendState === 'sending') {
return <span className="activityStatus activityStatus__sendStatus">Sending…</span>;
} else if (sendState === 'send failed') {
// Custom retry logic can be added when rendering the "Send failed." status.
return <span className="activityStatus">Send failed.</span>;
} else if (!hideTimestamp) {
return (
<span className="activityStatus activityStatus__timestamp">
<span className="activityStatus__timestampPretext">{role === 'user' ? 'User at ' : 'Bot at '}</span>
<span className="activityStatus__timestampContent">{next(args)}</span>
</span>
);
}
return next(args);
};
window.ReactDOM.render(
<ReactWebChat
activityStatusMiddleware={activityStatusMiddleware}
directLine={window.WebChat.createDirectLine({ token })}
/>,
document.getElementById('webchat')
);
document.querySelector('#webchat > *').focus();
})().catch(err => console.error(err));
</script>
</body>
</html>