Practical Bot Development Designing and Building Bots with Node.js and Microsoft Bot Framework — Szymon Rozga Practical Bot Development Designing and Building Bots with Node.js and Microsoft Bot Framework Szymon Rozga Practical Bot Development: Designing and Building Bots with Node.js and Microsoft Bot Framework Szymon Rozga Port Washington, New York, USA ISBN-13 (pbk): 978-1-4842-3539-3 ISBN-13 (electronic): 978-1-4842-3540-9 https://doi.org/10.1007/978-1-4842-3540-9 Library of Congress Control Number: 2018949897 Copyright © 2018 by Szymon Rozga This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Natalie Pao Development Editor: James Markham Coordinating Editor: Jessica Vakili Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book's product page, located at www.apress.com/978-1-4842-3539-3. For more detailed information, please visit www.apress.com/source-code. Printed on acid-free paper Table of Contents About the Author ���������������������������������������������������������������������������������xi About the Technical Reviewers ���������������������������������������������������������xiii Preface �����������������������������������������������������������������������������������������������xv Chapter 1: Introduction to Chat Bots ����������������������������������������������������1 The Expectations Game ����������������������������������������������������������������������������������������3 What Is a Chat Bot? �����������������������������������������������������������������������������������������������4 Why Now? �����������������������������������������������������������������������������������������������������������11 Advancements in Artificial Intelligence ���������������������������������������������������������11 Messaging Apps as a Conversational Intelligence Platform ��������������������������13 Voice-Activated Intelligent Assistants �����������������������������������������������������������14 Why Should We Create Bots? ������������������������������������������������������������������������������15 Bot Anatomy ��������������������������������������������������������������������������������������������������������18 Bot Runtime ���������������������������������������������������������������������������������������������������18 Natural Language Understanding Engine ������������������������������������������������������20 Conversation Engine ��������������������������������������������������������������������������������������22 Channel Integration ���������������������������������������������������������������������������������������25 Conclusion ����������������������������������������������������������������������������������������������������������27 Chapter 2: Chat Bot Natural Language Understanding �����������������������29 Natural Language Machine Learning Background ����������������������������������������������32 Common NLP Tasks ���������������������������������������������������������������������������������������������41 Syntax ������������������������������������������������������������������������������������������������������������41 Semantics ������������������������������������������������������������������������������������������������������41 iii TTaabbllee ooff CCoonnTTeennTTss Discourse Analysis�����������������������������������������������������������������������������������������42 Common Bot NLU Tasks ��������������������������������������������������������������������������������������42 Cloud-Based NLU Systems ���������������������������������������������������������������������������������44 Enterprise Space �������������������������������������������������������������������������������������������������45 Conclusion ����������������������������������������������������������������������������������������������������������46 Chapter 3: Language Understanding Intelligent Service (LUIS) ����������47 Classifying Intents �����������������������������������������������������������������������������������������������50 Publishing Your Application ���������������������������������������������������������������������������������58 Extracting Entities �����������������������������������������������������������������������������������������������64 Age, Dimension, Money, and Temperature �����������������������������������������������������67 DatetimeV2 ����������������������������������������������������������������������������������������������������69 E-mails, Phone Numbers, and URLs ��������������������������������������������������������������77 Number, Percentage, and Ordinal ������������������������������������������������������������������77 Entity Training �����������������������������������������������������������������������������������������������������79 Custom Entities ���������������������������������������������������������������������������������������������������83 Simple Entities�����������������������������������������������������������������������������������������������84 Composite Entities �����������������������������������������������������������������������������������������94 Hierarchical Entities ������������������������������������������������������������������������������������102 List Entities ��������������������������������������������������������������������������������������������������107 Regular Expressions Entities �����������������������������������������������������������������������109 Prebuilt Domains �����������������������������������������������������������������������������������������������109 A Historical Point �����������������������������������������������������������������������������������������111 Phrase Lists ������������������������������������������������������������������������������������������������������112 Active Learning �������������������������������������������������������������������������������������������������115 Dashboard Overview �����������������������������������������������������������������������������������������116 Managing and Versioning Your Application �������������������������������������������������������118 Integrating with Spell Checking ������������������������������������������������������������������������121 iv TTaabbllee ooff CCoonnTTeennTTss Import/Export Application ���������������������������������������������������������������������������������124 Using the LUIS Authoring API ����������������������������������������������������������������������������125 Troubleshooting Your Models ����������������������������������������������������������������������������126 Conclusion ��������������������������������������������������������������������������������������������������������128 Chapter 4: Conversation Design �������������������������������������������������������129 Common Use Cases ������������������������������������������������������������������������������������������130 Common Consumer Cases ��������������������������������������������������������������������������130 Common Enterprise Cases ��������������������������������������������������������������������������138 Representing Conversations �����������������������������������������������������������������������������141 Bot Responses ��������������������������������������������������������������������������������������������������144 Building Blocks ��������������������������������������������������������������������������������������������144 Authentication and Authorization in Bots ����������������������������������������������������149 Specialized Cards ����������������������������������������������������������������������������������������151 Other Functions �������������������������������������������������������������������������������������������������156 Conversational Experience Guidelines ��������������������������������������������������������������157 Focus �����������������������������������������������������������������������������������������������������������157 Don’t Pretend the Bot Is a Human ���������������������������������������������������������������158 Do Not Gender Bots �������������������������������������������������������������������������������������160 Always Present the Next Best Action �����������������������������������������������������������160 Have a Consistent Tone �������������������������������������������������������������������������������161 Utilize Rich Content �������������������������������������������������������������������������������������162 Be Forgiving ������������������������������������������������������������������������������������������������162 Avoid Getting Stuck �������������������������������������������������������������������������������������163 Don’t Abuse Proactive Messaging ���������������������������������������������������������������163 Provide a Clear Path to Humans ������������������������������������������������������������������163 Learn from Your Users ���������������������������������������������������������������������������������165 Conclusion ��������������������������������������������������������������������������������������������������������166 v TTaabbllee ooff CCoonnTTeennTTss Chapter 5: Introducing the Microsoft Bot Framework ����������������������167 Microsoft Bot Builder SDK Basics ���������������������������������������������������������������������168 Bot Framework End-to-End Setup ��������������������������������������������������������������������187 Step 1: Connecting to Azure ������������������������������������������������������������������������188 Step 2: Creating the Bot Registration ����������������������������������������������������������191 Step 3: Securing Our Bot �����������������������������������������������������������������������������194 Step 4: Setting Up Remote Access ��������������������������������������������������������������195 Step 5: Connecting to Facebook Messenger �����������������������������������������������197 Step 6: Deploying to Azure ���������������������������������������������������������������������������204 What Did We Just Do? ���������������������������������������������������������������������������������������210 Microsoft Azure �������������������������������������������������������������������������������������������210 Bot Channels Registration Entry ������������������������������������������������������������������211 Authentication ���������������������������������������������������������������������������������������������212 Connectivity and Ngrok �������������������������������������������������������������������������������212 Deploying to Facebook Messenger �������������������������������������������������������������213 Deploying to Azure ���������������������������������������������������������������������������������������214 Key Bot Builder SDK Concepts ��������������������������������������������������������������������������214 Sessions and Messages ������������������������������������������������������������������������������215 Waterfalls and Prompts �������������������������������������������������������������������������������221 Dialogs ���������������������������������������������������������������������������������������������������������225 Invoking Dialogs ������������������������������������������������������������������������������������������232 Recognizers �������������������������������������������������������������������������������������������������235 Building a Simple Calendar Bot ������������������������������������������������������������������������239 Conclusion ��������������������������������������������������������������������������������������������������������241 vi TTaabbllee ooff CCoonnTTeennTTss Chapter 6: Diving into the Bot Builder SDK���������������������������������������243 Conversation State ��������������������������������������������������������������������������������������������243 Messages ����������������������������������������������������������������������������������������������������������246 Addresses and Proactive Messages �����������������������������������������������������������������251 Rich Content ������������������������������������������������������������������������������������������������������253 Buttons ��������������������������������������������������������������������������������������������������������������259 Cards �����������������������������������������������������������������������������������������������������������������265 Suggested Actions ��������������������������������������������������������������������������������������������272 Channel Errors ��������������������������������������������������������������������������������������������������276 Channel Data �����������������������������������������������������������������������������������������������������276 Group Chat ��������������������������������������������������������������������������������������������������������282 Custom Dialogs �������������������������������������������������������������������������������������������������286 Actions ��������������������������������������������������������������������������������������������������������������294 Extra Notes on Actions���������������������������������������������������������������������������������300 Libraries ������������������������������������������������������������������������������������������������������������302 Conclusion ��������������������������������������������������������������������������������������������������������304 Chapter 7: Building an Integrated Bot Experience ����������������������������305 A Word on OAuth 2�0 �����������������������������������������������������������������������������������������306 Setting Up Google APIs ��������������������������������������������������������������������������������������307 Integrating Authentication with Bot Builder ������������������������������������������������������315 Seamless Login Flow ����������������������������������������������������������������������������������������323 Integrating with the Google Calendar API ���������������������������������������������������������336 Implementing the Bot Functionality ������������������������������������������������������������������345 Conclusion ��������������������������������������������������������������������������������������������������������353 vii TTaabbllee ooff CCoonnTTeennTTss Chapter 8: Extending Channel Functionality �������������������������������������355 Deeper Slack Integration ����������������������������������������������������������������������������������355 Connecting to Slack ������������������������������������������������������������������������������������������362 Experimenting with the Slack APIs �������������������������������������������������������������������370 Simple Interactive Message ������������������������������������������������������������������������������379 Multistep Experience ����������������������������������������������������������������������������������������391 Conclusion ��������������������������������������������������������������������������������������������������������406 Chapter 9: Creating a New Channel Connector ���������������������������������407 The Direct Line API ��������������������������������������������������������������������������������������������408 Custom Web Chat Interface �������������������������������������������������������������������������������411 Voice Bots ���������������������������������������������������������������������������������������������������������428 Twilio �����������������������������������������������������������������������������������������������������������429 Integrating Our Bot with Twilio ��������������������������������������������������������������������������431 Integrating with SSML ��������������������������������������������������������������������������������������447 Final Touches ����������������������������������������������������������������������������������������������������452 Conclusion ��������������������������������������������������������������������������������������������������������457 Chapter 10: Making the Chat Bot Smarter ����������������������������������������459 Spell-Checking ��������������������������������������������������������������������������������������������������462 Sentiment ����������������������������������������������������������������������������������������������������������471 Supporting Multiple Languages ������������������������������������������������������������������������474 QnA Maker ��������������������������������������������������������������������������������������������������������482 Computer Vision ������������������������������������������������������������������������������������������������489 Conclusion ��������������������������������������������������������������������������������������������������������496 viii TTaabbllee ooff CCoonnTTeennTTss Chapter 11: Adaptive Cards and Custom Graphics ���������������������������499 Adaptive Cards ��������������������������������������������������������������������������������������������������501 A Working Example ��������������������������������������������������������������������������������������512 Rendering Custom Graphics �����������������������������������������������������������������������������518 Conclusion ��������������������������������������������������������������������������������������������������������545 Chapter 12: Human Handoff ��������������������������������������������������������������547 We Still Need Humans���������������������������������������������������������������������������������������548 Chat Bots from a Customer Service Perspective ����������������������������������������������548 Always-On Chat Bot �������������������������������������������������������������������������������������549 Sometimes-On Chat Bot ������������������������������������������������������������������������������549 CSR-Facing Chat Bot �����������������������������������������������������������������������������������550 Typical Customer Service System Concepts �����������������������������������������������������550 Integration Approaches �������������������������������������������������������������������������������������552 Custom-Built Interface ��������������������������������������������������������������������������������552 On Platform��������������������������������������������������������������������������������������������������552 Product ��������������������������������������������������������������������������������������������������������554 Facebook Messenger Handover Sample �����������������������������������������������������������557 Conclusion ��������������������������������������������������������������������������������������������������������570 Chapter 13: Chat Bot Analytics ���������������������������������������������������������571 Common Data Questions �����������������������������������������������������������������������������������572 Generic Data ������������������������������������������������������������������������������������������������572 Demographics ���������������������������������������������������������������������������������������������573 Sentiment ����������������������������������������������������������������������������������������������������574 User Retention ���������������������������������������������������������������������������������������������575 User Session Flows �������������������������������������������������������������������������������������576 ix
Description: