Skip to content
Merged
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
Fix for diaspatch issue (#1766)
  • Loading branch information
JonathanFingold authored and emgrol committed Oct 14, 2019
commit 11edd6c1d255d33127cd4888540827e25c0f746e
91 changes: 52 additions & 39 deletions articles/v4sdk/bot-builder-tutorial-dispatch.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ monikerRange: 'azure-bot-service-4.0'
If a bot uses multiple LUIS models and QnA Maker knowledge bases (knowledge bases), you can use Dispatch tool to determine which LUIS model or QnA Maker knowledge base best matches the user input. The dispatch tool does this by creating a single LUIS app to route user input to the correct model. For more information about the Dispatch, including the CLI commands, refer to the [README][dispatch-readme].

## Prerequisites
- Knowledge of [bot basics](bot-builder-basics.md), [LUIS][howto-luis], and [QnA Maker][howto-qna].

- Knowledge of [bot basics](bot-builder-basics.md), [LUIS][howto-luis], and [QnA Maker][howto-qna].
- [Dispatch tool](https://github.com/Microsoft/botbuilder-tools/tree/master/packages/Dispatch)
- A copy of the **NLP with Dispatch** from either the [C# Sample][cs-sample] or [JS Sample][js-sample] code repository.
- A [luis.ai](https://www.luis.ai/) account to publish LUIS apps.
Expand Down Expand Up @@ -53,7 +54,8 @@ This sample is based on a predefined set of LUIS and QnA Maker Apps.
The handler calls the LUIS or QnA Maker service and returns the generated result back to the user.

## Create LUIS apps and QnA knowledge base
Before you can create the dispatch model, you'll need to have your LUIS apps and QnA knowledge bases created and published. In this article, we'll publish the following models that are included with the _NLP With Dispatch_ sample in the `\CognitiveModels` folder:

Before you can create the dispatch model, you'll need to have your LUIS apps and QnA knowledge bases created and published. In this article, we'll publish the following models that are included with the _NLP With Dispatch_ sample in the `\CognitiveModels` folder:

| Name | Description |
|------|------|
Expand All @@ -62,11 +64,12 @@ Before you can create the dispatch model, you'll need to have your LUIS apps and
| QnAMaker | A QnA Maker knowledge base that provides answers to simple questions about the bot. |

### Create LUIS apps

1. Log into the [LUIS web portal](https://www.luis.ai/). Under the _My apps_ section, select the Tab _Import new app_. The following Dialog Box will appear:

![Import LUIS json file](./media/tutorial-dispatch/import-new-luis-app.png)

2. Select the button _Choose app file_, navigate to the CognitiveModel folder of your sample code and select the file 'HomeAutomation.json'. Leave the optional name field blank.
2. Select the button _Choose app file_, navigate to the CognitiveModel folder of your sample code and select the file 'HomeAutomation.json'. Leave the optional name field blank.

3. Select _Done_.

Expand All @@ -86,12 +89,12 @@ Before you can create the dispatch model, you'll need to have your LUIS apps and

The first step to setting up a QnA Maker knowledge base is to set up a QnA Maker service in Azure. To do that, follow the step-by-step instructions found [here](https://aka.ms/create-qna-maker).

Once your QnA Maker Service has been created in Azure, you need to record the Cognitive Services _Key 1_ provided for your QnA Maker service. This will be used as \<azure-qna-service-key1> when adding the QnA Maker app to your dispatch application.
Once your QnA Maker Service has been created in Azure, you need to record the Cognitive Services _Key 1_ provided for your QnA Maker service. This will be used as \<azure-qna-service-key1> when adding the QnA Maker app to your dispatch application.

Learn more about the [two different types of keys](https://docs.microsoft.com/azure/cognitive-services/qnamaker/how-to/set-up-qnamaker-service-azure#types-of-keys-in-qna-maker) used with QnA Maker.

The following steps provide you with this key:

![Select Cognitive Service](./media/tutorial-dispatch/select-qna-cognitive-service.png)

1. From within your Azure portal, select your QnA Maker cognitive service.
Expand All @@ -104,16 +107,15 @@ The following steps provide you with this key:

1. Copy the value of _Key 1_ to your clipboard and save this locally. this will later be used for the (-k) key value \<azure-qna-service-key1> when adding the QnA Maker app to your dispatch application.

1. Now sign in to the [QnAMaker web portal](https://qnamaker.ai).
1. Now sign in to the [QnAMaker web portal](https://qnamaker.ai).

1. At step 2, select the following:

* Your Azure AD account.
* Your Azure subscription name.
* The name you created for your QnA Maker service. (If your Azure QnA service does not initially appear in this pull down list, try refreshing the page.)
- Your Azure AD account.
- Your Azure subscription name.
- The name you created for your QnA Maker service. (If your Azure QnA service does not initially appear in this pull down list, try refreshing the page.)

![Create QnA Step 2](./media/tutorial-dispatch/create-qna-step-2.png)

![Create QnA Step 2](./media/tutorial-dispatch/create-qna-step-2.png)

1. At step 3, provide a name for your QnA Maker knowledge base. For this example use the name 'sample-qna'.

Expand All @@ -134,12 +136,12 @@ The following steps provide you with this key:
Host: <your-hostname> // NOTE - this is a URL.
Authorization: EndpointKey <qna-maker-resource-key>
```
The full URL string for your hostname will look like "https://< >.azure.net/qnamaker". These values will later be used within your `appsettings.json` or `.env` file.

The full URL string for your hostname will look like "https://<host-id>.azure.net/qnamaker". These values will later be used within your `appsettings.json` or `.env` file.

## Dispatch app needs read access to existing apps

The dispatch tool needs authoring access to read the existing LUIS and QnA Maker apps in order to create a new parent LUIS app that dispatches to the LUIS and QnA Maker apps. This access is provided with the app IDs and authoring keys.
The dispatch tool needs authoring access to read the existing LUIS and QnA Maker apps in order to create a new parent LUIS app that dispatches to the LUIS and QnA Maker apps. This access is provided with the app IDs and authoring keys.

### Service authoring keys

Expand All @@ -148,9 +150,9 @@ The **authoring key** is only used for creating and editing the models. You need
|App|Location of information|
|--|--|
|LUIS|**App ID** - found in the [LUIS portal](https://www.luis.ai) for each app, Manage -> Application Information<br>**Authoring Key** - found in the LUIS portal, top-right corner, select your own User, then Settings.|
|QnA Maker| **App ID** - found in the [QnA Maker portal](https://http://qnamaker.ai) on the Settings page after you publish the app. This is the ID found in first part of the POST command after the knowledgebase. An example of where to find the app ID is `POST /knowledgebases/{APP-ID}/generateAnswer`.<br>**Authoring Key** - found in the Azure portal, for the QnA Maker resource, under the **Keys**. You only need one of the keys.|
|QnA Maker| **App ID** - found in the [QnA Maker portal](https://http://qnamaker.ai) on the Settings page after you publish the app. This is the ID found in first part of the POST command after the knowledgebase. An example of where to find the app ID is `POST /knowledgebases/<APP-ID>/generateAnswer`.<br>**Authoring Key** - found in the Azure portal, for the QnA Maker resource, under the **Keys**. You only need one of the keys.|

The authoring key is not used to get a prediction score or confidence score from the published application. You need the endpoint keys for this action. The **[endpoint keys](#service-endpoint-keys)** are found and used later in this tutorial.
The authoring key is not used to get a prediction score or confidence score from the published application. You need the endpoint keys for this action. The **[endpoint keys](#service-endpoint-keys)** are found and used later in this tutorial.

Learn more about the [two different types of keys](https://docs.microsoft.com/azure/cognitive-services/qnamaker/how-to/set-up-qnamaker-service-azure#types-of-keys-in-qna-maker) used with QnA Maker.

Expand Down Expand Up @@ -197,7 +199,7 @@ The generated LUIS app defines intents for each of the child apps and the knowle
- `None`
- `q_sample-qna`

These services need to be published under the correct names for the bot to run properly.
These services need to be published under the correct names for the bot to run properly.
The bot needs information about the published services, so that it can access those services.

### Service endpoint keys
Expand All @@ -207,32 +209,32 @@ The bot needs the query prediction endpoints for the three LUIS apps (dispatch,
|App|Query endpoint key location|
|--|--|
|LUIS|In the LUIS portal, for each LUIS app, in the Manage section, select **Keys and Endpoint settings** to find the keys associated with each app. If you are following this tutorial, the endpoint key is the same key as the `<your-luis-authoring-key>`. The authoring key allows for 1000 endpoint hits then expires.|
|QnA Maker|In the QnA Maker portal, for the knowledge base, in the Manage settings, use the key value shows in the Postman settings for the **Authorization** header, without the text of `EndpointKey `.|
|QnA Maker|In the QnA Maker portal, for the knowledge base, in the Manage settings, use the key value shows in the Postman settings for the **Authorization** header, without the text of `EndpointKey`.|

These values are used in the **appsettings.json** for C# and the **.env** file for javascript.

## [C#](#tab/cs)

### Installing packages

Prior to running this app for the first time ensure that several nuget packages are installed:
Prior to running this app for the first time ensure that several NuGet packages are installed:

**Microsoft.Bot.Builder**

**Microsoft.Bot.Builder.AI.Luis**

**Microsoft.Bot.Builder.AI.QnA**
- **Microsoft.Bot.Builder**
- **Microsoft.Bot.Builder.AI.Luis**
- **Microsoft.Bot.Builder.AI.QnA**

### Manually update your appsettings.json file

Once all of your service apps are created, the information for each needs to be added into your 'appsettings.json' file. The initial [C# Sample][cs-sample] code contains an empty appsettings.json file:

**appsettings.json**
**appsettings.json**

[!code-json[AppSettings](~/../botbuilder-samples/samples/csharp_dotnetcore/14.nlp-with-dispatch/AppSettings.json?range=8-17)]

For each of the entities shown below, add the values you recorded earlier in these instructions:

**appsettings.json**

```json
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
Expand All @@ -245,6 +247,7 @@ For each of the entities shown below, add the values you recorded earlier in the
"LuisAPIKey": "<your-luis-endpoint-key>",
"LuisAPIHostName": "<your-dispatch-app-region>",
```

When all changes are complete, save this file.

## [JavaScript](#tab/js)
Expand All @@ -257,6 +260,7 @@ Prior to running this app for the first time you will need to install several np
npm install --save botbuilder
npm install --save botbuilder-ai
```

To use the .env configuration file, your bot needs an extra package included:

```powershell
Expand Down Expand Up @@ -299,14 +303,16 @@ To connect to the Dispatch, LUIS, and QnA Maker services, your bot pulls informa

In **BotServices.cs**, the information contained within configuration file _appsettings.json_ is used to connect your dispatch bot to the `Dispatch` and `SampleQnA` services. The constructors use the values you provided to connect to these services.

**BotServices.cs**
**BotServices.cs**

[!code-csharp[ReadConfigurationInfo](~/../botbuilder-samples/samples/csharp_dotnetcore/14.nlp-with-dispatch/BotServices.cs?range=14-30)]

## [JavaScript](#tab/js)

In **dispatchBot.js** the information contained within configuration file _.env_ is used to connect your dispatch bot to the _LuisRecognizer(dispatch)_ and _QnAMaker_ services. The constructors use the values you provided to connect to these services.

**bots/dispatchBot.js**
**bots/dispatchBot.js**

[!code-javascript[ReadConfigurationInfo](~/../botbuilder-samples/samples/javascript_nodejs/14.nlp-with-dispatch/bots/dispatchBot.js?range=11-24)]

---
Expand All @@ -319,14 +325,15 @@ For each input from your user, the bot logic checks user input against the comb

In the **DispatchBot.cs** file whenever the `OnMessageActivityAsync` method is called, we check the incoming user message against the Dispatch model. We then pass the Dispatch Model's `topIntent` and `recognizerResult` on to the correct method to call the service and return the result.

**bots\DispatchBot.cs**
**bots\DispatchBot.cs**

[!code-csharp[OnMessageActivity](~/../botbuilder-samples/samples/csharp_dotnetcore/14.nlp-with-dispatch/bots/DispatchBot.cs?range=26-36)]

## [JavaScript](#tab/js)

In the **dispatchBot.js** `onMessage` method, we check the user input message against the Dispatch model, find the _topIntent_, then pass this on by calling _dispatchToTopIntentAsync_.

**bots/dispatchBot.js**
**bots/dispatchBot.js**

[!code-javascript[OnMessageActivity](~/../botbuilder-samples/samples/javascript_nodejs/14.nlp-with-dispatch/bots/dispatchBot.js?range=29-42)]

Expand All @@ -338,7 +345,8 @@ In the **dispatchBot.js** `onMessage` method, we check the user input message ag

When the model produces a result, it indicates which service can most appropriately process the utterance. The code in this bot routes the request to the corresponding service, and then summarizes the response from the called service. Depending on the _intent_ returned from Dispatch, this code uses the returned intent to route to the correct LUIS model or QnA service.

**bots\DispatchBot.cs**
**bots\DispatchBot.cs**

[!code-csharp[DispatchToTop](~/../botbuilder-samples/samples/csharp_dotnetcore/14.nlp-with-dispatch/bots/DispatchBot.cs?range=51-69)]

If method `ProcessHomeAutomationAsync` or `ProcessWeatherAsync` are invoked, they are passed the results from the dispatch model within _luisResult.ConnectedServiceResult_. The specified method then provides user feedback showing the dispatch model top intent, plus a ranked listing of all intents and entities that were detected.
Expand Down Expand Up @@ -383,9 +391,9 @@ If method `q_sample-qna` is invoked, it uses the user input contained within the

## Dispatch for user utterance to QnA Maker

1. In the bot emulator, enter the text `hi` and submit the utterance. The bot submits this query to the dispatch LUIS app and gets back a response indicating which child app should get this utterance for further processing.
1. In the bot emulator, enter the text `hi` and submit the utterance. The bot submits this query to the dispatch LUIS app and gets back a response indicating which child app should get this utterance for further processing.

1. By selecting the `LUIS Trace` line in the log, you can see the LUIS response in the bot emulator . The LUIS result from the dispatch LUIS app displays in the Inspector.
1. By selecting the `LUIS Trace` line in the log, you can see the LUIS response in the bot emulator . The LUIS result from the dispatch LUIS app displays in the Inspector.

```json
{
Expand Down Expand Up @@ -417,10 +425,10 @@ If method `q_sample-qna` is invoked, it uses the user input contained within the
}
}
```

Because the utterance, `hi`, is part of the dispatch LUIS app's **q_sample-qna** intent, and is selected as the `topScoringIntent`, the bot will make a second request, this time to the QnA Maker app, with the same utterance.

1. Select the `QnAMaker Trace` line in the bot emulator log. The QnA Maker result displays in the Inspector.
Because the utterance, `hi`, is part of the dispatch LUIS app's **q_sample-qna** intent, and is selected as the `topScoringIntent`, the bot will make a second request, this time to the QnA Maker app, with the same utterance.

1. Select the `QnAMaker Trace` line in the bot emulator log. The QnA Maker result displays in the Inspector.

```json
{
Expand All @@ -444,14 +452,17 @@ If method `q_sample-qna` is invoked, it uses the user input contained within the

## Resolving incorrect top intent from Dispatch

Once your bot is running, it is possible to improve the bot's performance by removing similar or overlapping utterances between the dispatched apps. For example, let's say that in the `Home Automation` LUIS app requests like "turn my lights on" map to a "TurnOnLights" intent, but requests like "Why won't my lights turn on?" map to a "None" intent so that they can be passed on to QnA Maker. These two utterances are too close for the dispatch LUIS app to determine if the correct child app is the LUIS app or the QnA Maker app.
Once your bot is running, it is possible to improve the bot's performance by removing similar or overlapping utterances between the dispatched apps.
<!--For example, let's say that in the `Home Automation` LUIS app requests like "turn my lights on" map to a "TurnOnLights" intent, but requests like "Why won't my lights turn on?" map to a "None" intent so that they can be passed on to QnA Maker. These two utterances are too close for the dispatch LUIS app to determine if the correct child app is the LUIS app or the QnA Maker app.

When you combine the LUIS app and the QnA Maker app using dispatch, you need to do _one_ of the following:

* Remove the "None" intent from the child `Home Automation` LUIS app, and instead add the utterances from that intent to the "None" intent in the dispatcher app.
* Add logic in your bot to pass the messages that match the Dispatch LUIS app's "None" intent on to the QnA maker service. Compare the score of the Dispatch LUIS app's score and the score of the QnA Maker app. Use the highest score. This effectively removes QnA Maker from the Dispatch cycle.
- Remove the "None" intent from the child `Home Automation` LUIS app, and instead add the utterances from that intent to the "None" intent in the dispatcher app.
- Add logic in your bot to pass the messages that match the Dispatch LUIS app's "None" intent on to the QnA maker service. Compare the score of the Dispatch LUIS app's score and the score of the QnA Maker app. Use the highest score. This effectively removes QnA Maker from the Dispatch cycle.

Either of the above two actions will reduce the number of times that your bot responds back to your users with the message, 'Couldn't find an answer.'
-->
You can use the [Dispatch][dispatch-readme] command-line tool to test and evaluate your dispatch model.

### To update or create a new LUIS model

Expand Down Expand Up @@ -481,11 +492,13 @@ To delete QnA Maker resources:

To improve services used in this sample, refer to best practice for [LUIS](https://docs.microsoft.com/azure/cognitive-services/luis/luis-concept-best-practices), and [QnA Maker](https://docs.microsoft.com/azure/cognitive-services/qnamaker/concepts/best-practices).

<!-- Foot-note style links -->

[howto-luis]: bot-builder-howto-v4-luis.md
[howto-qna]: bot-builder-howto-qna.md

[cs-sample]: https://aka.ms/dispatch-sample-cs
[js-sample]: https://aka.ms/dispatch-sample-js

[dispatch-readme]: https://aka.ms/botbuilder-tools-dispatch
[dispatch-readme]: https://aka.ms/dispatch-command-line-tool
<!--[dispatch-evaluate]: https://aka.ms/dispatch-command-line-tool#evaluating-your-dispatch-model-->