Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
597 commits
Select commit Hold shift + click to select a range
80beb4d
Direct line extension (#1606)
Aug 2, 2019
dec7deb
yl- issues fixing (#1628)
zxyanliu Aug 2, 2019
ef35b8d
Merge branch 'live' into master
emgrol Aug 2, 2019
7a33d7c
Update conversion-core.md
emgrol Aug 2, 2019
a1eaa44
Release 'live' 08-02-2019 (#1636)
emgrol Aug 2, 2019
11c7afb
Merge branch 'master' into community-content
Kaiqb Aug 2, 2019
d622e20
Update bot-builder-tutorial-basic-deploy.md
emgrol Aug 2, 2019
1cf292f
Update bot-builder-telemetry.md
emgrol Aug 2, 2019
d871164
Update bot-builder-concept-activity-processing.md
emgrol Aug 2, 2019
2293a12
Update bot-builder-howto-proactive-message.md
emgrol Aug 2, 2019
6d83f35
Update articles/bot-builder-deploy-az-cli.md
Kaiqb Aug 6, 2019
f8137a1
Update articles/bot-builder-deploy-az-cli.md
Kaiqb Aug 6, 2019
ac1f8fd
Update bot-builder-deploy-az-cli.md
Kaiqb Aug 6, 2019
bb5bca7
Update bot-builder-tutorial-basic-deploy.md
Aug 6, 2019
ecf96ed
Update bot-builder-deploy-az-cli.md
Aug 6, 2019
1f4e6f6
Update bot-builder-tutorial-basic-deploy.md
Aug 6, 2019
82b20dc
Update bot-builder-deploy-az-cli.md
Aug 7, 2019
f48ac8c
Update bot-builder-tutorial-basic-deploy.md
Aug 7, 2019
28c6822
Update bot-builder-deploy-az-cli.md
Aug 7, 2019
3b6b534
Update bot-builder-tutorial-basic-deploy.md
Aug 7, 2019
0b58d7e
Update bot-builder-tutorial-basic-deploy.md
Aug 7, 2019
cd889ce
Update bot-builder-deploy-az-cli.md
Aug 7, 2019
f7ef674
Update bot-builder-deploy-az-cli.md
Kaiqb Aug 7, 2019
43c6c33
Update bot-builder-deploy-az-cli.md
Kaiqb Aug 7, 2019
a0fb955
Update bot-builder-deploy-az-cli.md
Kaiqb Aug 7, 2019
a3cf2d9
Community content (#1634)
Kaiqb Aug 7, 2019
8c341bd
Merge branch 'live' into master
Kaiqb Aug 7, 2019
4106e19
Release 'live' 08-07-2019 (#1646)
Kaiqb Aug 7, 2019
9a1629c
M37355: Fixing typo awo/two (#1643)
v-maudel Aug 8, 2019
24ca736
mm/directline-update (#1644)
Aug 8, 2019
c7534ae
Various doc edits (#1637)
JonathanFingold Aug 8, 2019
0ab576c
yl-fix broken links (#1641)
zxyanliu Aug 8, 2019
fbdff1e
mm/fixing issues (#1638)
Aug 8, 2019
dcdd7d8
Update bot-builder-nodejs-cortana-skill.md (#1649)
emgrol Aug 8, 2019
bc2b013
Merge branch 'live' into master
emgrol Aug 8, 2019
0f630d5
Update cortana-skill-concepts.md
emgrol Aug 8, 2019
6a83b2c
Release 'live' 08-07-2019 (part 2) (#1650)
emgrol Aug 8, 2019
c0ba0ae
[VA & Skills] Updated links in VA and Skill documentation (#1642)
lauren-mills Aug 9, 2019
2a4bbe5
Put my working notes somewhere where other writers can access them. (…
JonathanFingold Aug 12, 2019
0ff6f75
Attempt to fix most of the api xref issues (#1645)
JonathanFingold Aug 13, 2019
34f0fc2
Issue fixes (#1652)
emgrol Aug 13, 2019
1f2d7e1
Merge branch 'live' into master
emgrol Aug 13, 2019
7b3d2b5
Release 'live' 08-13-2019 (#1655)
emgrol Aug 13, 2019
8a190b5
[styleguide] Add to and update dialog notes (#1654)
JonathanFingold Aug 13, 2019
56e7ce4
[styleguide: dialogs] Incremental updates (#1657)
JonathanFingold Aug 14, 2019
55f5ccf
Update Direct Line Speech article (#1653)
JonathanFingold Aug 15, 2019
7a21db0
Merge remote-tracking branch 'origin/live'
Aug 15, 2019
4ddaae6
Release 'live' 08-14-2019 (#1658)
emgrol Aug 15, 2019
d46cec7
Update bot-builder-deploy-az-cli.md (#1660)
emgrol Aug 15, 2019
58d3ce2
Update bot-builder-deploy-az-cli.md (#1663)
emgrol Aug 15, 2019
0fb46bb
Merge branch 'live' into master
emgrol Aug 16, 2019
c2fbd00
Release 'live' 08-15-2019 part 2 (#1664)
emgrol Aug 16, 2019
c449996
Update **Bot basics** with respect to `ActivityHandler` changes (#1667)
JonathanFingold Aug 16, 2019
1947556
Commit changes to styleguide-dialogs (#1666)
JonathanFingold Aug 16, 2019
5721fa0
Merge branch 'live' into master
emgrol Aug 17, 2019
0010c1c
Update bot-builder-basics.md
emgrol Aug 17, 2019
3eaf06d
Release 'live' 08-16-2019 (#1668)
emgrol Aug 17, 2019
e191e88
Update code snippet references as necessary. (#1670)
JonathanFingold Aug 20, 2019
3506805
Merge branch 'live' into master
emgrol Aug 20, 2019
72e0a70
Release 'live' 08-19-2019 (#1672)
emgrol Aug 20, 2019
d9d0f0e
yl-update-code-links (#1671)
zxyanliu Aug 20, 2019
6319147
mm/fixing issues (#1647)
Aug 21, 2019
4c2bb02
Merge branch 'live' into master
emgrol Aug 21, 2019
9e1034a
Release 'live' 08-21-2019 part 1 (#1675)
emgrol Aug 21, 2019
1f2e13c
fix bugs in JS code (#1674)
zxyanliu Aug 21, 2019
fe0004c
Merge branch 'live' into master
emgrol Aug 22, 2019
514a3c1
Release 'live' 08-21-2019 part 2 (#1677)
emgrol Aug 22, 2019
b1aaa9f
Fix code snippet alignment and related issues (#1676)
JonathanFingold Aug 22, 2019
35dc328
CI Update (#1599)
v-alje Aug 22, 2019
662f12f
Fix broken links and some metadata and whitespace issues. (#1679)
JonathanFingold Aug 23, 2019
af224e0
Merge branch 'live' into master
emgrol Aug 23, 2019
ec0bcb4
mm/migration-issues (#1656)
Aug 26, 2019
008aa62
Release 'live' 08-26-2019 (#1681)
emgrol Aug 26, 2019
a0a040d
mm/migration (removed JavaScript user state topic) (#1683)
Aug 26, 2019
bf116eb
yl-fixing-code-order (#1682)
zxyanliu Aug 26, 2019
00e0ccd
mm/auth-issues (#1680)
Aug 26, 2019
5cf424f
yl-deploy-suggested-changes01 (#1659)
zxyanliu Aug 26, 2019
a03dbc5
Restore old REST API object documentation and cross-linking. (#1684)
JonathanFingold Aug 26, 2019
b7f5a07
C113896: Adding break-line before snippet (#1669)
v-maudel Aug 26, 2019
3279d22
Merge branch 'live' into master
emgrol Aug 26, 2019
c200cc2
Release 'live' 09-26-2019 part 2 (#1686)
emgrol Aug 26, 2019
71e9552
Fixing auth issues (#1685)
Aug 27, 2019
7c0fe1f
Merge branch 'live' into master
emgrol Aug 28, 2019
0b647dc
Release 'live '08-27-2019 (#1689)
emgrol Aug 28, 2019
7727e02
AKA link fixes (#1673)
emgrol Aug 28, 2019
3aa57eb
CC152236: fixing typo for consistency CSharp/C# (#1696)
v-maudel Aug 29, 2019
796a68f
CC152231: fixing typo for consistency CSharp/C# (#1695)
v-maudel Aug 29, 2019
4efe3ea
CC152112: fixing typo for consistency CSharp/C# (#1694)
v-maudel Aug 29, 2019
773a116
CC152110: fixing typo for consistency CSharp/C# (#1693)
v-maudel Aug 29, 2019
92e6304
CC152099: fixing typo for consistency CSharp/C# (#1692)
v-maudel Aug 29, 2019
8775724
CC152097: fixing typo for consistency CSharp/C# (#1691)
v-maudel Aug 29, 2019
bc6d9a0
CC152078: fixing typo for consistency CSharp/C# (#1690)
v-maudel Aug 29, 2019
e648ca5
Minor edits and updates to dialog terms (#1699)
JonathanFingold Aug 29, 2019
c804269
Fix schema docs (#1698)
Aug 29, 2019
e98af4d
Merge branch 'live' into master
emgrol Aug 30, 2019
eacf152
Release 'live' 08-29-2019 (#1700)
emgrol Aug 30, 2019
618a796
Merge branch 'live' into master
emgrol Sep 3, 2019
c2f82be
Update what-is-new.md with AKA link fix (#1701)
emgrol Sep 3, 2019
ed7c5bf
mm/fixing issues (#1697)
Sep 3, 2019
e573c58
Release 'live' 09-03-2019 (#1705)
emgrol Sep 3, 2019
9f75927
Merge branch 'live' into master
emgrol Sep 4, 2019
c4d2dfb
Release 'live' 09-04-2019 (#1708)
emgrol Sep 4, 2019
0920853
Build suggestion and warning fixes (#1709)
emgrol Sep 4, 2019
e7fbbbb
Merge branch 'live' into master
emgrol Sep 4, 2019
a6d02ec
Release 'live' 09-04-19 part 2 (#1710)
emgrol Sep 4, 2019
5538ffd
yl-deploy02 (#1687)
zxyanliu Sep 5, 2019
c8dfea2
Updating Telegram channel article (#1711)
emgrol Sep 5, 2019
84de129
mm/fixing-fb-issue-090319 (#1706)
Sep 5, 2019
3754418
Merge branch 'live' into master
emgrol Sep 5, 2019
dd12ddf
Release 'live' 09-05-2019 (#1713)
emgrol Sep 5, 2019
d21abdf
Publish initial writing resource notes (#1714)
JonathanFingold Sep 5, 2019
44db21b
Update bot-service-activities-entities.md (#1716)
zxyanliu Sep 6, 2019
5c72884
Merge branch 'live' into master
emgrol Sep 9, 2019
99fa595
Release 'live' 09-09-2019 (#1718)
emgrol Sep 9, 2019
9b94825
Add ref doc process notes (#1717)
JonathanFingold Sep 9, 2019
ff26db4
Update bot-framework-rest-connector-api-reference.md (#1712)
Sep 9, 2019
e286d28
Update bot-framework-rest-connector-add-rich-cards.md (#1703)
emgrol Sep 10, 2019
241df48
Updating bot-builder-howto-add-media-attachments.md (issue 1247) (#1715)
emgrol Sep 10, 2019
7b302e4
Update bot-builder-telemetry.md (#1720)
emgrol Sep 10, 2019
4dec46f
Merge branch 'live' into master
emgrol Sep 10, 2019
e815e78
Release 'live' 09-10-2019 (#1721)
emgrol Sep 10, 2019
63281e5
Modified HTML sample starting on line 158 (#1723)
WashingtonKayaker Sep 17, 2019
246a58f
Merge branch 'live' into master
emgrol Sep 17, 2019
96d26f6
Release 'live' 09-17-2019 (#1724)
emgrol Sep 17, 2019
9587724
Update bot-service-troubleshoot-general-problems.md (#1725)
Kaiqb Sep 17, 2019
2256712
Merge branch 'live' into master
Kaiqb Sep 17, 2019
61a2297
Release 'live' 09-17-2019 (#1726)
Kaiqb Sep 17, 2019
cae3c93
fixed a minor gramatical error (#1727)
WashingtonKayaker Sep 17, 2019
6062ff3
Kaiqb/note (#1728)
Kaiqb Sep 17, 2019
a81ea41
Merge branch 'live' into master
emgrol Sep 18, 2019
378dbff
Release 'live' 09-17-2019 (#1729)
Kaiqb Sep 18, 2019
53fea1b
Add notes on writing JS ref docs (#1732)
JonathanFingold Sep 20, 2019
3ecd895
Public issue 1356 (#1735)
diberry Sep 23, 2019
fc82984
Merge branch 'live' into master
emgrol Sep 24, 2019
b869b6c
Release 'live' 09-24-2019 (#1739)
emgrol Sep 24, 2019
f44695b
Take notes on 4.6-preview changes in the dialogs libraries (#1733)
JonathanFingold Sep 24, 2019
fb53295
Update terminology (#1740)
JonathanFingold Sep 24, 2019
4301eb2
Review 4.6-preview branch (#1741)
JonathanFingold Sep 24, 2019
96a5beb
Removed mentions of Channel Inspector - issue 1345 (#1742)
emgrol Sep 25, 2019
b88d945
mm-tracking issues (#1688)
Sep 25, 2019
cc4e610
mm-fixing-speech-issues (#1734)
Sep 25, 2019
de24518
Adding link to 'Next Steps' section - issue 1354 (#1738)
emgrol Sep 25, 2019
c993640
Adding TypeScript bot detail in deployment snippets (#1736)
zxyanliu Sep 25, 2019
35098eb
Fixed activity class link (#1737)
emgrol Sep 25, 2019
f2874fe
Merge branch 'live' into master
emgrol Sep 25, 2019
d493caf
Release 'live' 09-25-2019 (#1744)
emgrol Sep 25, 2019
6e44b03
Add to notes on adaptive dialogs (#1745)
JonathanFingold Sep 25, 2019
41b0c22
Start fixing my adaptive dialog notes (#1750)
JonathanFingold Sep 30, 2019
3a76162
Merge branch 'community-content-live-sync-work' into community-content
Kaiqb Sep 30, 2019
a23d7ef
Merge branch 'master' into community-content
Kaiqb Sep 30, 2019
113f273
C123184: Adding two spaces to create hard break-line before snippet (…
v-maudel Sep 30, 2019
e6b8542
Merge branch 'master' into community-content
emgrol Sep 30, 2019
e481f28
Update bot-framework-rest-connector-api-reference.md
Kaiqb Sep 30, 2019
59c1ee5
Update bot-service-channels-reference.md
Kaiqb Sep 30, 2019
e482104
Update bot-service-activities-entities.md (#1752)
emgrol Sep 30, 2019
f40c815
Merge branch 'master' into community-content
Kaiqb Sep 30, 2019
b6f4965
Community content (#1751)
Kaiqb Sep 30, 2019
b44e783
Merge branch 'live' into master
Kaiqb Sep 30, 2019
e9cd857
Release 'live' 09-30-2019 (#1753)
Kaiqb Sep 30, 2019
c5412b8
C123182: Adding two spaces to create hard break-line before snippet (…
v-maudel Oct 1, 2019
171bd7a
Continue updating notes (#1756)
JonathanFingold Oct 1, 2019
c0a21d7
C123185: Fixing hiperlink syntax (#1757)
v-maudel Oct 2, 2019
586ff14
Update notes (#1759)
JonathanFingold Oct 7, 2019
34657e5
Update bot-service-channel-directline-extension.md (#1758)
Oct 8, 2019
fdc0e57
Merge branch 'live' into master
JonathanFingold Oct 8, 2019
7e901f5
Release 'live' 10-08-2019 (#1760)
Kaiqb Oct 8, 2019
5b21a67
L129483: Adding break-line before snippet (#1761)
v-maudel Oct 9, 2019
9f8f96e
Update bot-builder-skills-overview.md (#1762)
Kaiqb Oct 9, 2019
fa6b551
Merge branch 'live' into master
Kaiqb Oct 9, 2019
5d81c5b
Release 'live' 10-09-2019 (#1763)
Kaiqb Oct 9, 2019
471f571
Updated code snippet (#1765)
emgrol Oct 14, 2019
11edd6c
Fix for diaspatch issue (#1766)
JonathanFingold Oct 14, 2019
ec5c626
Merge branch 'live' into master
emgrol Oct 14, 2019
a6dcd51
Fix for some yml warnings in the doc build (#1768)
JonathanFingold Oct 14, 2019
9b06f45
Release 'live' 10-14-2019 (#1767)
emgrol Oct 14, 2019
00a6fd2
Update dialog notes for writers (#1773)
JonathanFingold Oct 16, 2019
e7d1b70
Updates for telemetry in 4.6 (#1770)
garypretty Oct 17, 2019
a84f069
Merge branch 'live' into master
Kaiqb Oct 17, 2019
9857dfb
Release 'live' 10-17-2019 (#1774)
Kaiqb Oct 17, 2019
09b5c69
Update bot-builder-telemetry.md (#1775)
Kaiqb Oct 17, 2019
23138d5
Merge branch 'live' into master
Kaiqb Oct 17, 2019
9216ac5
Update bot-builder-telemetry.md
Kaiqb Oct 17, 2019
b8b2776
Release 'live' 10-17-2019 (#1776)
Kaiqb Oct 17, 2019
5a92a12
Update LUIS tutorial to call out includeApiResults (#1771)
garypretty Oct 17, 2019
709fd32
Merge branch 'live' into master
Kaiqb Oct 17, 2019
33b6719
Release 'live' 10-17-2019 (#1778)
Kaiqb Oct 17, 2019
2070d00
Tweak dialogs diagram (#1779)
JonathanFingold Oct 18, 2019
299edd0
Update bot-service-channel-connect-facebook.md (#1781)
Kaiqb Oct 28, 2019
e9c15df
Merge branch 'live' into master
Kaiqb Oct 28, 2019
b281974
Release 'live' 10-28-2019 (#1782)
Kaiqb Oct 28, 2019
4ccc308
Ignite-2019 branch --> master (#1788)
Kaiqb Nov 1, 2019
d06eeae
Merge branch 'live' into master
Kaiqb Nov 1, 2019
7913261
Release 'live' 11-01-2019 (Ignite) (#1789)
Kaiqb Nov 1, 2019
d22930a
Kaiqb/whatsnew (#1790)
Kaiqb Nov 1, 2019
157712f
Merge branch 'live' into master
Kaiqb Nov 1, 2019
4751c7b
Release 'live' 11-01-2019 (#1791)
Kaiqb Nov 2, 2019
0176f09
Update bot-builder-basics-teams.md (#1794)
WashingtonKayaker Nov 4, 2019
b29aef7
Kaiqb/speech (#1792)
Kaiqb Nov 4, 2019
9422ab1
Merge branch 'live' into master
Kaiqb Nov 4, 2019
3387b36
Update what-is-new.md
Kaiqb Nov 4, 2019
490810d
Release 'live' 11-04-2019 (#1796)
Kaiqb Nov 4, 2019
f257dde
Fix selected code-links (11/05) (#1798)
JonathanFingold Nov 6, 2019
60b8af3
Update bot-service-debug-inspection-middleware.md (#1800)
zxyanliu Nov 6, 2019
1163918
Update javascript-migration-quickreference.md (#1786)
Nov 6, 2019
8c96e6c
mm-azure-work-item-30108-auth (#1748)
Nov 6, 2019
753426b
mm-fixing-directline-issue-1335 (#1799)
Nov 6, 2019
53e0161
Fix code snippets in the following articles: (#1793)
JonathanFingold Nov 6, 2019
d6aaf39
mm-work-item-30646-faq (#1743)
Nov 6, 2019
9e66e23
Issue 1383 fix (#1797)
emgrol Nov 7, 2019
7069ffb
Update dialog-diagrams.pptx (#1807)
JonathanFingold Nov 7, 2019
e67ed4f
Fix selected code links (11/06) (#1804)
JonathanFingold Nov 7, 2019
5669bc9
Update bot-builder-telemetry.md (#1805)
WashingtonKayaker Nov 7, 2019
9af940b
Update bot-builder-authentication.md (#1809)
Nov 7, 2019
9a0c8a5
Merge branch 'live' into master
Kaiqb Nov 8, 2019
7c41cca
Update Direct Line Speech (#1810)
Kaiqb Nov 8, 2019
0ce4939
Release 'live' 11-11-2019 (#1811)
Kaiqb Nov 12, 2019
d9e87eb
Update index.yml (#1814)
Kaiqb Nov 12, 2019
b283a5d
Merge branch 'live' into master
Kaiqb Nov 12, 2019
312a459
Release 'live' 11-11-2019 (#1815)
Kaiqb Nov 12, 2019
e15d832
Issue 1375 fix (#1802)
emgrol Nov 12, 2019
2e744bd
M44898: Fixing typo give/given (#1812)
v-maudel Nov 13, 2019
f0e954d
mm-fixing-issue-1379 (#1808)
Nov 13, 2019
433d095
yl-fixes-issue (#1820)
zxyanliu Nov 15, 2019
da4357e
Addressing Issue #1421 (#1826)
WashingtonKayaker Nov 15, 2019
ae026e6
Update bot-service-review-guidelines.md (#1828)
zxyanliu Nov 18, 2019
244a93c
Clarify that it's the bot's app ID and password, not the user's (#1829)
JonathanFingold Nov 18, 2019
0762def
Update bot-service-channel-connect-email.md (#1839)
Kaiqb Nov 20, 2019
29a20c7
Merge branch 'live' into master
Kaiqb Nov 20, 2019
901e9ab
Merge branch 'community-content' into master
Kaiqb Nov 22, 2019
dcacda7
Release 'live' 11-20-2019 (#1840)
Kaiqb Nov 22, 2019
71777f6
Community content (#1856)
Kaiqb Nov 23, 2019
75ce895
Merge branch 'live' into master
Kaiqb Nov 23, 2019
dbc7eae
Release 'live' 11-22-2019 (#1857)
Kaiqb Nov 23, 2019
caaa664
Migration FAQ + bug fixes (#1858)
Kaiqb Nov 23, 2019
65f21af
Community content (#1860)
Kaiqb Nov 23, 2019
fb277d3
Merge branch 'live' into master
Kaiqb Nov 23, 2019
78da125
Relesae 'live' 11-22-2019 (#1861)
Kaiqb Nov 25, 2019
424ee0b
Community content (#1863)
Kaiqb Nov 25, 2019
7a02dae
Merge branch 'live' into master
Kaiqb Nov 25, 2019
2ddf0b0
Release 'live' 11-25-2019 (#1864)
Kaiqb Nov 25, 2019
b234c75
Community content (#1866)
Kaiqb Nov 25, 2019
0defc7d
Merge branch 'live' into master
Kaiqb Nov 25, 2019
6df2ac1
Release 'live' 11-25-2019 (#1867)
Kaiqb Nov 25, 2019
a4a437a
Merge branch 'master' into live
Kaiqb Nov 25, 2019
2ae9dc3
QnA-Telemtry (#1615) (#1869)
Kaiqb Nov 25, 2019
08f9dc9
Release 'live' 11-25-2019 (#1873)
Kaiqb Nov 26, 2019
a5f5d22
Release 'live' 11-26-2019 (#1878)
Kaiqb Nov 26, 2019
5dba300
Release 'live' 11-26-2019 (#1881)
Kaiqb Nov 26, 2019
0b91841
Release 'live' 11-27-2019 (#1884)
Kaiqb Nov 27, 2019
f5995bf
Merge branch 'live' into live-sync-work
Kaiqb Nov 27, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
mm/auth-issues (#1680)
  • Loading branch information
Michael Miele authored and emgrol committed Aug 26, 2019
commit 00e0ccdd3357eff3c577af14dea3b63498b5b18f
14 changes: 9 additions & 5 deletions articles/bot-service-channel-connect-webchat.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ ms.author: kamrani
manager: kamrani
ms.topic: article
ms.service: bot-service
ms.subservice: sdk
ms.date: 12/04/2018
ms.date: 08/22/2019
---

# Connect a bot to Web Chat
Expand All @@ -21,7 +20,12 @@ When you [create a bot](bot-service-quickstart.md) with Bot Service, the Web Cha

The Web Chat channel in the Bot Framework Portal contains everything you need to embed the web chat control in a web page. All you have to do to use the web chat control is get your bot's secret key and embed the control in a web page.

## <a id="step-1"></a> Get your bot secret key
## Web Chat and Direct Line considerations

> [!IMPORTANT]
> Please, keep in mind these important [Security considerations](rest-api/bot-framework-rest-direct-line-3-0-authentication.md#security-considerations).

## Get your bot secret key

1. Open your bot in the [Azure Portal](http://portal.azure.com) and click **Channels** blade.

Expand Down Expand Up @@ -52,7 +56,7 @@ To exchange your secret for a token and generate the embed:

2. The response to your **GET** request will contain the token (surrounded with quotation marks) that can be used to start a conversation by rendering the web chat control within an **iframe**. A token is valid for one conversation only; to start another conversation, you must generate a new token.

3. Within the `iframe` **Embed code** that you copied from the Web Chat channel within the Bot Framework Portal (as described in [Get your bot secret key](#step-1) above), change the `s=` parameter to `t=` and replace "YOUR_SECRET_HERE" with your token.
3. Within the `iframe` **Embed code** that you copied from the Web Chat channel within the Bot Framework Portal (as described in [Get your bot secret key](#get-your-bot-secret-key) above), change the `s=` parameter to `t=` and replace "YOUR_SECRET_HERE" with your token.

> [!NOTE]
> Tokens will automatically be renewed before they expire.
Expand Down Expand Up @@ -112,7 +116,7 @@ Use this option if you want to allow other developers to easily embed your bot i

To embed your bot in your website by specifying the secret within the `iframe` tag:

1. Copy the `iframe` **Embed code** from the Web Chat channel within the Bot Framework Portal (as described in [Get your bot secret key](#step-1) above).
1. Copy the `iframe` **Embed code** from the Web Chat channel within the Bot Framework Portal (as described in [Get your bot secret key](#get-your-bot-secret-key) above).

2. Within that **Embed code**, replace "YOUR_SECRET_HERE" with the **Secret key** value that you copied from the same page.

Expand Down
132 changes: 129 additions & 3 deletions articles/rest-api/bot-framework-rest-direct-line-3-0-authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ ms.author: kamrani
manager: kamrani
ms.topic: article
ms.service: bot-service
ms.subservice: sdk
ms.date: 04/10/2019
ms.date: 08/22/2019
---

# Authentication
Expand Down Expand Up @@ -135,7 +134,134 @@ HTTP/1.1 200 OK
}
```

## Azure Bot Service authentication

The information presented in this section is based on the [Add authentication to your bot via Azure Bot Service](../v4sdk/bot-builder-authentication.md) article.

**Azure Bot Service authentication** enables you to authenticate users to and get **access tokens** from a variety of identity providers such as *Azure Active Directory*, *GitHub*, *Uber* and so on. You can also configure authentication for a custom **OAuth2** identity provider. All this enables you to write **one piece of authentication code** that works across all supported identity providers and channels. To utilize these capabilities you need to perform the following steps:

1. Statically configure `settings` on your bot that contains the details of your application registration with an identity provider.
2. Use an `OAuthCard`, backed by the application information you supplied in the previous step, to sign-in a user.
3. Retrieve access tokens through **Azure Bot Service API**.

### Security considerations

<!-- Summarized from: https://blog.botframework.com/2018/09/25/enhanced-direct-line-authentication-features/ -->

When you use *Azure Bot Service authentication* with [Web Chat](../bot-service-channel-connect-webchat.md) there are some important security considerations you must keep in mind.

1. **Impersonation**. Impersonation here means an attacker makes the bot thinks he is someone else. In Web Chat, an attacker can impersonate someone else by **changing the user ID** of his Web Chat instance. To prevent this, it is recommend to bot developers to make the **user ID unguessable**.
If you enable **enhanced authentication** options, Azure Bot Service can further detect and reject any user ID change. This means the user ID (`Activity.From.Id`) on messages from Direct Line to your bot will always be the same as the one you initialized the Web Chat with. Note that this feature requires the user ID starts with `dl_`
1. **User identities**. You must be aware that your are dealing with two user identities:

1. The user’s identity in a channel.
1. The user’s identity in an identity provider that the bot is interested in.

When a bot asks user A in a channel to sign-in to an identity provider P, the sign-in process must assure that user A is the one that signs into P.
If another user B is allowed to sign-in, then user A would have access to user B’s resource through the bot. In Web Chat we have 2 mechanisms for ensuring the right user signed in as described next.

1. At the end of sign-in, in the past, the user was presented with a randomly generated 6-digit code (aka magic code). The user must type this code in the conversation that initiated the sign-in to complete the sign-in process. This mechanism tends to result in a bad user experience. Additionally, it is still susceptible to phishing attacks. A malicious user can trick another user to sign-in and obtain the magic code through phishing.

2. Because of the issues with the previous approach, Azure Bot Service removed the need for the magic code. Azure Bot Service guarantees that the sign-in process can only be completed in the **same browser session** as the Web Chat itself.
To enable this protection, as a bot developer, you must start Web Chat with a **Direct Line token** that contains a **list of trusted domains that can host the bot’s Web Chat client**. Before, you could only obtain this token by passing an undocumented optional parameter to the Direct Line token API. Now, with enhanced authentication options, you can statically specify the trusted domain (origin) list in the Direct Line configuration page.

### Code examples

The following .NET controller works with enhanced authentication options enabled and returns a Direct Line Token and user ID.

```csharp
public class HomeController : Controller
{
public async Task<ActionResult> Index()
{
var secret = GetSecret();

HttpClient client = new HttpClient();

HttpRequestMessage request = new HttpRequestMessage(
HttpMethod.Post,
$"https://directline.botframework.com/v3/directline/tokens/generate");

request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secret);

var userId = $"dl_{Guid.NewGuid()}";

request.Content = new StringContent(
JsonConvert.SerializeObject(
new { User = new { Id = userId } }),
Encoding.UTF8,
"application/json");

var response = await client.SendAsync(request);
string token = String.Empty;

if (response.IsSuccessStatusCode)
{
var body = await response.Content.ReadAsStringAsync();
token = JsonConvert.DeserializeObject<DirectLineToken>(body).token;
}

var config = new ChatConfig()
{
Token = token,
UserId = userId
};

return View(config);
}
}

public class DirectLineToken
{
public string conversationId { get; set; }
public string token { get; set; }
public int expires_in { get; set; }
}
public class ChatConfig
{
public string Token { get; set; }
public string UserId { get; set; }
}

```

The following JavaScript controller works with enhanced authentication options enabled and returns a Direct Line Token and user ID.

```javascript
var router = express.Router(); // get an instance of the express Router

// Get a directline configuration (accessed at GET /api/config)
const userId = "dl_" + createUniqueId();

router.get('/config', function(req, res) {
const options = {
method: 'POST',
uri: 'https://directline.botframework.com/v3/directline/tokens/generate',
headers: {
'Authorization': 'Bearer ' + secret
},
json: {
User: { Id: userId }
}
};

request.post(options, (error, response, body) => {
if (!error && response.statusCode < 300) {
res.json({
token: body.token,
userId: userId
});
}
else {
res.status(500).send('Call to retrieve token from Direct Line failed');
}
});
});

```

## Additional resources

- [Key concepts](bot-framework-rest-direct-line-3-0-concepts.md)
- [Connect a bot to Direct Line](../bot-service-channel-connect-directline.md)
- [Connect a bot to Direct Line](../bot-service-channel-connect-directline.md)
- [Add authentication to your bot via Azure Bot Service](../bot-builder-tutorial-authentication.md)
49 changes: 24 additions & 25 deletions articles/v4sdk/bot-builder-authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ ms.author: kamrani
manager: kamrani
ms.topic: article
ms.service: bot-service
ms.date: 06/07/2019
ms.date: 08/22/2019
monikerRange: 'azure-bot-service-4.0'
---

Expand Down Expand Up @@ -81,15 +81,8 @@ Once you finish, you will have a bot running locally that can respond to a few s

<!-- Summarized from: https://blog.botframework.com/2018/09/25/enhanced-direct-line-authentication-features/ -->

There are a couple of important security issues to consider when you use Azure Bot Service authentication with Web Chat.

1. Prevent impersonation, where an attacker makes the bot think they're someone else. In Web Chat, an attacker can impersonate someone else by changing the user ID of his Web Chat instance.

To prevent this, make the user ID unguessable. When you enable enhanced authentication options in the Direct Line channel, Azure Bot Service can detect and reject any user ID change. The user ID on messages from Direct Line to your bot will always be the same as the one you initialized Web Chat with. Note that this feature requires the user ID to start with `dl_`.

1. Ensure the correct user is signed in. The user has two identities: their identity in a channel and their identity with the identity provider. In Web Chat, Azure Bot Service can guarantee that the sign-in process is completed in the same browser session as Web Chat itself.

To enable this protection, start Web Chat with a Direct Line token that contains a list of trusted domains that can host the bot's Web Chat client. Then, statically specify the trusted domain (origin) list in the Direct Line configuration page.
> [!IMPORTANT]
> Please, keep in mind these important [Security considerations](../rest-api/bot-framework-rest-direct-line-3-0-authentication.md#security-considerations).

## Prerequisites

Expand Down Expand Up @@ -173,7 +166,7 @@ You now have an Azure AD application configured.

The next step is to register with your bot the Azure AD application that you just created.

# [Azure AD v1](#tab/aadv1)
#### Azure AD v1

1. Navigate to your bot's resource page on the [Azure Portal](http://portal.azure.com/).
1. Click **Settings**.
Expand All @@ -186,7 +179,11 @@ The next step is to register with your bot the Azure AD application that you jus
1. For **Client secret**, enter the secret that you created to grant the bot access to the Azure AD app.
1. For **Grant Type**, enter `authorization_code`.
1. For **Login URL**, enter `https://login.microsoftonline.com`.
1. For **Tenant ID**, enter the directory (tenant) ID that your recorded earlier for your Azure AD app.
1.For **Tenant ID**, enter the **directory (tenant) ID** that your recorded earlier for your AAD app or **common** depending on the supported account types selected when you created the ADD app. To decide which value to assign follow these criteria:

- When creating the AAD app if you selected either *Accounts in this organizational directory only (Microsoft only - Single tenant)* or *Accounts in any organizational directory(Microsoft AAD directory - Multi tenant)* enter the **tenant ID** you recorded earlier for the AAD app.

- However, if you selected *Accounts in any organizational directory (Any AAD directory - Multi tenant and personal Microsoft accounts e.g. Skype, Xbox, Outlook.com)* enter the word **common** instead of a tenant ID. Otherwise, the AAD app will verify through the tenant whose ID was selected and exclude personal MS accounts.

This will be the tenant associated with the users who can be authenticated.

Expand All @@ -198,7 +195,7 @@ The next step is to register with your bot the Azure AD application that you jus
> [!NOTE]
> These values enable your application to access Office 365 data via the Microsoft Graph API.

# [Azure AD v2](#tab/aadv2)
#### Azure AD v2

1. Navigate to your bot's Bot Channels Registration page on the [Azure Portal](http://portal.azure.com/).
1. Click **Settings**.
Expand All @@ -209,7 +206,11 @@ The next step is to register with your bot the Azure AD application that you jus
1. For **Service Provider**, select **Azure Active Directory v2**. Once you select this, the Azure AD-specific fields will be displayed.
1. For **Client id**, enter the application (client) ID that you recorded for your Azure AD v1 application.
1. For **Client secret**, enter the secret that you created to grant the bot access to the Azure AD app.
1. For **Tenant ID**, enter the directory (tenant) ID that your recorded earlier for your Azure AD app.
1. For **Tenant ID**, enter the **directory (tenant) ID** that your recorded earlier for your AAD app or **common** depending on the supported account types selected when you created the ADD app. To decide which value to assign follow these criteria:

- When creating the AAD app if you selected either *Accounts in this organizational directory only (Microsoft only - Single tenant)* or *Accounts in any organizational directory(Microsoft AAD directory - Multi tenant)* enter the **tenant ID** you recorded earlier for the AAD app.

- However, if you selected *Accounts in any organizational directory (Any AAD directory - Multi tenant and personal Microsoft accounts e.g. Skype, Xbox, Outlook.com)* enter the word **common** instead of a tenant ID. Otherwise, the AAD app will verify through the tenant whose ID was selected and exclude personal MS accounts.

This will be the tenant associated with the users who can be authenticated.

Expand All @@ -224,8 +225,6 @@ The next step is to register with your bot the Azure AD application that you jus
> [!NOTE]
> These values enable your application to access Office 365 data via the Microsoft Graph API.

---

### Test your connection

1. Click on the connection entry to open the connection you just created.
Expand Down Expand Up @@ -338,7 +337,7 @@ Within a dialog step, use `BeginDialogAsync` to start the OAuth prompt, which as

Within the following dialog step, check for the presence of a token in the result from the previous step. If it is not null, the user successfully signed in.

[!code-csharp[Get the OAuthPrompt result](~/../botbuilder-samples/samples/csharp_dotnetcore/18.bot-authentication/Dialogs/MainDialog.cs?range=54-58)]
[!code-csharp[Get the OAuthPrompt result](~/../botbuilder-samples/samples/csharp_dotnetcore/18.bot-authentication/Dialogs/MainDialog.cs?range=54-56)]

# [JavaScript](#tab/javascript)

Expand All @@ -348,7 +347,7 @@ Within the following dialog step, check for the presence of a token in the resul

Add an OAuth prompt to **MainDialog** in its constructor. Here, the value for the connection name was retrieved from the **.env** file.

[!code-javascript[Add OAuthPrompt](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/dialogs/mainDialog.js?range=23-28)]
[!code-javascript[Add OAuthPrompt](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/dialogs/mainDialog.js?range=24-29)]

Within a dialog step, use `beginDialog` to start the OAuth prompt, which asks the user to sign in.

Expand All @@ -359,7 +358,7 @@ Within a dialog step, use `beginDialog` to start the OAuth prompt, which asks th

Within the following dialog step, check for the presence of a token in the result from the previous step. If it is not null, the user successfully signed in.

[!code-javascript[Get OAuthPrompt result](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/dialogs/mainDialog.js?range=61-64)]
[!code-javascript[Get OAuthPrompt result](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/dialogs/mainDialog.js?range=62-63)]

---

Expand All @@ -381,25 +380,25 @@ When you start an OAuth prompt, it waits for a token response event, from which

**AuthBot** derives from `ActivityHandler` and explicitly handles token response event activities. Here, we continue the active dialog, which allows the OAuth prompt to process the event and retrieve the token.

[!code-javascript[onTokenResponseEvent](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/bots/authBot.js?range=28-33)]
[!code-javascript[onTokenResponseEvent](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/bots/authBot.js?range=29-31)]

---

### Log the user out

It's best practice to let users explicitly sign out or logout, instead of relying on the connection to time out.
It is best practice to let users explicitly sign out or logout, instead of relying on the connection to time out.

# [C#](#tab/csharp)

**Dialogs\LogoutDialog.cs**

[!code-csharp[Allow logout](~/../botbuilder-samples/samples/csharp_dotnetcore/18.bot-authentication/Dialogs/LogoutDialog.cs?range=20-61&highlight=35)]
[!code-csharp[Allow logout](~/../botbuilder-samples/samples/csharp_dotnetcore/18.bot-authentication/Dialogs/LogoutDialog.cs?range=44-61&highlight=11)]

# [JavaScript](#tab/javascript)

**dialogs/logoutDialog.js**

[!code-javascript[Allow logout](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/dialogs/logoutDialog.js?range=13-42&highlight=25)]
[!code-javascript[Allow logout](~/../botbuilder-samples/samples/javascript_nodejs/18.bot-authentication/dialogs/logoutDialog.js?range=31-42&highlight=7)]

---

Expand All @@ -411,11 +410,11 @@ One difference between other channels and Teams is that Teams sends an *invoke*

# [C#](#tab/csharp)
**Bots/TeamsBot.cs**
[!code-csharp[Invoke Activity](~/../botbuilder-samples/samples/csharp_dotnetcore/46.teams-auth/Bots/TeamsBot.cs?range=34-42&highlight34)]
[!code-csharp[Invoke Activity](~/../botbuilder-samples/samples/csharp_dotnetcore/46.teams-auth/Bots/TeamsBot.cs?range=34-42&highlight=1)]

# [JavaScript](#tab/javascript)
**bots/teamsBot.js**
[!code-javascript[Invoke Activity](~/../botbuilder-samples/samples/javascript_nodejs/46.teams-auth/bots/teamsBot.js?range=27-31&highlight=27)]
[!code-javascript[Invoke Activity](~/../botbuilder-samples/samples/javascript_nodejs/46.teams-auth/bots/teamsBot.js?range=27-32&highlight=3)]

---

Expand Down
Loading