Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Build your Chatbots like Rails Apps

Build your Chatbots like Rails Apps

Chat platforms are continuing to grow at an accelerated pace as product owners are expanding their services to chat. “Be where your users are” is a motto that many companies are practicing and chat is one of those platforms where it makes it easier for users to use these services.

As the chat platform expands, the availability of libraries, examples, and experience around these platforms is slow to catch up. Frameworks like Rails and Laravel help developers get their services onto the web in record speed but these types of frameworks do not exist for chat platforms. That lack of availability can leave chat developers to re-invent the common capabilities which slows down development on the chat platforms.

Why can’t we develop for chat platforms like we do for the web or for mobile? Why can’t we get further away from the metal and build more rapidly for these platforms.

I spend most of my days building for chat platforms and I feel like these libraries should exist. In fact, I have built several versions of these libraries and I want to share the knowledge I have gained.

In this session, we will look at how these chat platforms, Slack in particular, work and how we can take advantage of concepts we learned building traditional web applications and apply those to help build for chat platforms with less boiler plate code, less setup, and more familiarity. We will look at how we can build an MVC framework for chatbot platforms.

Jamie Wright
PRO

August 06, 2022
Tweet

More Decks by Jamie Wright

Other Decks in Programming

Transcript

  1. Build Your
    RailsApps
    like
    CHATBOTS

    View Slide

  2. View Slide

  3. A Brief In
    tr
    o
    CHATBOTS

    View Slide

  4. A COMPUTER PROGRAM DESIGNED TO
    SIMULATE A CONVERSATION WITH HUMAN
    USERS
    CHATBOT

    View Slide

  5. USER PLATFORM APP
    OPS CHANNEL
    /HELP
    { CHANNEL: ‘C1234’,


    USER: ‘U8324’,


    TEAM: ‘T4390’,


    MESSAGE: ‘/HELP’ }
    CHAT.POST_MESSAGE(‘HERE IS THE HELP YOU REQUESTED:’)
    OPS CHANNEL
    HERE IS THE HELP


    YOU REQUESTED:

    View Slide

  6. USER PLATFORM APP
    CLIENT SERVER

    View Slide

  7. J
    os
    eph
    WEIZENBAUM

    View Slide

  8. J
    os
    eph
    WEIZENBAUM

    View Slide

  9. View Slide

  10. View Slide

  11. ELIZA

    View Slide

  12. SIRI
    2 0 0 7

    View Slide

  13. 2 0 0 1

    View Slide

  14. View Slide

  15. View Slide

  16. RADIOHEAD
    IS
    ALWAYS
    AHEAD OF THEIR TIME™

    View Slide

  17. imp
    or
    tant?
    CHATBOTS
    Why are

    View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. FAMILIAR

    View Slide

  27. View Slide

  28. FAMILIAR

    View Slide

  29. FAMILIAR LESS BARRIERS

    View Slide

  30. MESSAGES SLACK
    TEAMS FACEBOOK

    View Slide

  31. BE WHERE YOUR USERS ARE

    View Slide

  32. PLATFORM SPECIFIC
    FUN STUFF
    BUSINESS STUFF

    View Slide

  33. MO’ MONEY

    View Slide

  34. FUN
    DEV CODE RUN BEEP-BOOP

    View Slide

  35. built today?
    CHATBOTS
    How are

    View Slide

  36. HOW SLACK WORKS
    A P P D I R E C T O R Y

    View Slide

  37. HOW SLACK WORKS
    O A U T H W / S L A C K

    View Slide

  38. HOW SLACK WORKS
    S C O P E R E Q U E S T

    View Slide

  39. HOW SLACK WORKS
    N E W B O T U S E R !

    View Slide

  40. USER PLATFORM APP
    OPS CHANNEL
    /HELP
    { CHANNEL: ‘C1234’,


    USER: ‘U8324’,


    TEAM: ‘T4390’,


    MESSAGE: ‘/HELP’ }
    HOW SLACK WORKS

    View Slide

  41. View Slide

  42. JAVASCRIPT LIBRARIES

    View Slide

  43. JAVASCRIPT LIBRARIES

    View Slide

  44. be improved?
    CHATBOTS
    How can building

    View Slide

  45. MOUNTING
    MIDDLEWARE
    CONTEXT
    ROUTER
    CONTROLLER
    TEMPLATES

    View Slide

  46. MOUNTING
    > LISTEN TO SPECIFIC ENDPOINTS
    > INTEGRATE INTO EXISTING APP

    View Slide

  47. MOUNTING

    View Slide

  48. MOUNTING

    View Slide

  49. ROUTER
    > DSL TO DEFINE ROUTES
    > FIND APPROPRIATE ROUTE
    > MIDDLEWARE

    View Slide

  50. ROUTER
    D E F I N I N G R O U T E S

    View Slide

  51. ROUTER
    C O N F I G U R E A P P

    View Slide

  52. ROUTER

    View Slide

  53. ROUTER
    C O N F I G U R E A P P

    View Slide

  54. ROUTER
    D E F I N E C O N F I G U R AT I O N

    View Slide

  55. ROUTER

    View Slide

  56. ROUTER
    D E F I N E C O N F I G U R AT I O N

    View Slide

  57. ROUTER

    View Slide

  58. ROUTER
    D E F I N E C O N F I G U R AT I O N

    View Slide

  59. ROUTER
    D E F I N E P L AT F O R M R O U T E R

    View Slide

  60. ROUTER

    View Slide

  61. ROUTER
    D E F I N E P L AT F O R M R O U T E R

    View Slide

  62. ROUTER
    D E F I N E S L A C K R O U T E R

    View Slide

  63. ROUTER

    View Slide

  64. ROUTER
    D E F I N E S L A C K R O U T E R

    View Slide

  65. ROUTER
    D E F I N E S L A C K A C T I O N R O U T E

    View Slide

  66. ROUTER

    View Slide

  67. ROUTER
    D E F I N E S L A C K A C T I O N R O U T E

    View Slide

  68. ROUTER Finding routes
    F I N D I N G R O U T E S

    View Slide

  69. ROUTER

    View Slide

  70. ROUTER
    F I N D I N G R O U T E S

    View Slide

  71. ROUTER
    F I N D I N G R O U T E S

    View Slide

  72. ROUTER
    F I N D I N G R O U T E S

    View Slide

  73. ROUTER Finding routes
    F I N D I N G R O U T E S

    View Slide

  74. ROUTER
    M I D D L E W A R E

    View Slide

  75. MIDDLEWARE
    > CHAIN RESPONSIBILITIES TOGETHER
    > EXTENSION POINTS
    > MODIFY CONTEXT
    > COMMON RUNTIME ON EACH REQUEST

    View Slide

  76. MIDDLEWARE
    D E F I N I N G M I D D L E W A R E

    View Slide

  77. MIDDLEWARE
    M I D D L E W A R E A P I

    View Slide

  78. MIDDLEWARE
    C H A I N M I D D L E W A R E

    View Slide

  79. MIDDLEWARE
    C H A I N M I D D L E W A R E

    View Slide

  80. CONTEXT
    > VARIABLES FOR USE IN CONTROLLER
    > ONLY UPDATED IN MIDDLEWARE

    View Slide

  81. CONTEXT

    View Slide

  82. CONTROLLER
    > ACTION PER REQUEST
    > PREPARE RESPONSE(S)

    View Slide

  83. CONTROLLER
    E X A M P L E

    View Slide

  84. TEMPLATES
    > PLATFORM INDEPENDENT
    > SENT BACK AS A RESPONSE
    > INTERLACE DATA

    View Slide

  85. TEMPLATES
    E X A M P L E

    View Slide

  86. like Rails Apps
    CHATBOTS
    The
    tr
    adeo
    ff
    s on building

    View Slide

  87. ROUTING
    A NICE


    BLACK BOX
    YOUR APP
    ROUTER
    CONTROLLERS
    TEMPLATES
    AUTHORIZATION
    LOW-LEVEL API
    PLATFORM LIBRARIES
    HIDE THE PLUMBING

    View Slide

  88. FAMILIAR PATTERN
    MODEL
    VIEW CONTROLLER
    USER
    SEES USES
    MANIPULATES
    UPDATES

    View Slide

  89. EVERYTHING HAS A PLACE
    VIEWS
    CONTROLLERS
    MODELS ROUTES
    > BUSINESS LOGIC > HANDLES PLATFORM REQUESTS
    > RUNS MIDDLEWARE
    > PASSES CONTEXT
    > CREATES CONTROLLER
    > RUNS ACTION
    > HANDLES REQUEST
    > PREPARES RESPONSE
    > RENDERS RESPONSE(S)
    > RETRIEVE DATA
    > UPDATE DATA
    > INTEGRATES DATA
    > PROVIDES RESPONSE

    View Slide

  90. EXTENSION POINTS
    USER
    REQUEST
    PLATFORM APP
    ROUTER FINDS ROUTE
    MIDDLEWARE IS RUN
    CONTROLLER IS CREATED
    ACTION IS CALLED
    TEMPLATE IS RENDERED
    RESPONSE IS SENT
    USER
    RESPONSE

    View Slide

  91. OVERKILL FOR SIMPLE BROADCAST
    PLATFORM
    GITHUB
    > CHAT.POSTMESSAGE

    View Slide

  92. HARDER TO DEBUG
    > NOMETHODERROR: UNDEFINED METHOD `SHOW’ FOR NIL:NILCLASS
    > /.GEM/RUBY/3.1.0/GEMS/STRIPE-5.48.0/LIB/STRIPE/WEBHOOK.RB:104:IN `VERIFY_HEADER
    > /.GEM/RUBY/3.1.0/GEMS/JOURNEY-0.6.2/LIB/JOURNEY/CONTROLLER.RB:6:IN `SEND_ACTION'
    > /.GEM/RUBY/3.1.0/GEMS/JOURNEY-0.6.2/LIB/JOURNEY/ROUTER:34:IN `FIND_ROUTE’
    > …
    > …
    > …
    > …
    > …
    > …
    > …
    C A L L S T A C K

    View Slide

  93. Future
    ENHANCEMENTS

    View Slide

  94. DIALOGUE

    View Slide

  95. DIALOGUE
    TATSUIO/DIALOGUE

    View Slide

  96. RANDOM ACCESS MEMORY
    USER
    CAN YOU
    SCHEDULE


    A MEETING?
    APP
    I SURE CAN.


    WITH WHOM?
    USER
    WITH TIM.
    APP
    GOT IT. WHEN?
    USER
    TOMORROW AT 2.
    APP
    DONE.


    I SCHEDULED A


    MEETING WITH


    TIM TOMORROW
    AT 2.

    View Slide

  97. RANDOM ACCESS MEMORY
    CAN YOU SCHEDULE


    A MEETING?
    USER
    CAN YOU SCHEDULE


    A MEETING


    WITH TIM


    TOMORROW AT 2?
    APP
    DONE.


    I SCHEDULED


    YOUR MEETING


    WITH TIM FOR


    TOMORROW AT 2.
    CAN YOU SCHEDULE


    A MEETING?
    USER
    ACTUALLY CAN


    YOU MAKE IT FOR 3?
    APP
    DONE.


    I RE-SCHEDULED


    IT FOR


    TOMORROW AT 3.

    View Slide

  98. RANDOM ACCESS MEMORY
    DETECT PARAMETERS ALLOW CHANGE

    View Slide

  99. DISCOVERABILITY
    T R A I N I N G W H E E L S
    ARE YOU READY FOR


    THE MEETING?


    YOU CAN REPLY


    WITH ‘Y’ES OR ’N’O.
    APP USER
    YES.
    MEETING SCHEDULED!


    DID YOU KNOW YOU


    CAN REQUEST A RESCHEDULE


    BY REPLYING


    ‘RE-SCHEDULE’?
    APP

    View Slide

  100. VALIDATION
    ANDY WANTS TO MEET
    WITH YOU TODAY AT 2.
    APP
    ARE YOU AVAILABLE?
    USER
    BLERG.

    View Slide

  101. VALIDATION
    I’M SORRY ‘BLERG’ IS
    NOT AN ANSWER.
    APP
    ACKNOWLEDGE THE RESPONSE
    1.
    YOU CAN RESPOND ‘YES’
    OR ‘NO’
    APP
    PROVIDE CORRECT OPTIONS
    2.
    ANDY WANTS TO MEET
    WITH YOU TODAY AT 2.
    APP
    ARE YOU AVAILABLE?
    RE-ASK THE QUESTION
    3.

    View Slide

  102. SELECTION
    WHERE DO YOU WANT TO
    MEET MACKENZIE
    TONIGHT?
    APP USER
    1.
    1. COFFEE SHOP


    2. RESTAURANT


    3. BAR
    APP
    O P T I O N R E D U C T I O N

    View Slide

  103. SELECTION
    OK. WHICH COFFEE
    SHOP?
    APP
    O P T I O N R E D U C T I O N
    1. CAFE JOE’S


    2. STARBUCKS ON MAIN


    3. PERKATORY
    APP

    View Slide

  104. RESPONSE SAMPLING
    YES
    APP
    OK
    APP
    CORRECT
    APP
    WRONG
    APP
    NOPE
    APP
    LOOKS GOOD
    APP
    👍
    APP

    APP
    THAT’S WHAT SHE SAID
    APP
    COOL
    APP

    View Slide

  105. View Slide

  106. View Slide

  107. WHY ELIXIR?
    FAST
    1. STATEFUL PROCESSES
    2. HOT CODE RELOADING
    3.

    View Slide

  108. JUVET/JUVET

    View Slide

  109. View Slide

  110. View Slide

  111. View Slide

  112. TATSU.IO

    View Slide

  113. GO FORTH + CREATE BOTS

    View Slide

  114. @JWRIGHT
    JWRIGHT
    [email protected]
    STANDUP.FM

    View Slide