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

Elixir + Chatbots: A match made in a panacea

Elixir + Chatbots: A match made in a panacea

There is another massive shift happening with how we interact with companies through software. Users feel comfortable naturally talking with their applications through chat bots. Chat is the next generation of the user interface.

Companies like Slack, Facebook, WhatsApp, and WeChat have some of the most popular apps in the world and they are all betting on a messaging interface.

Elixir is the perfect language and ecosystem for building bots and for conversational interfaces. In this session, we will see how we can build scalable, realtime web applications (or “bots”) using a new library Juvet and the Slack API. We will see what a good bot architecture looks like and how we can integrate with existing artificial intelligence services to make our bots smarter.

Jamie Wright
PRO

August 09, 2022
Tweet

More Decks by Jamie Wright

Other Decks in Programming

Transcript

  1. Elixir
    +
    CHATBOTS
    A MATCH MADE IN A PANACEA

    View Slide

  2. A Brief In
    tr
    o
    CHATBOTS

    View Slide

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

    View Slide

  4. 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

  5. USER PLATFORM APP
    CLIENT SERVER

    View Slide

  6. J
    os
    eph
    WEIZENBAUM

    View Slide

  7. J
    os
    eph
    WEIZENBAUM

    View Slide

  8. View Slide

  9. View Slide

  10. ELIZA

    View Slide

  11. SIRI
    2 0 0 7

    View Slide

  12. 2 0 0 1

    View Slide

  13. View Slide

  14. View Slide

  15. RADIOHEAD
    IS
    ALWAYS
    AHEAD OF THEIR TIME™

    View Slide

  16. imp
    or
    tant?
    CHATBOTS
    Why are

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. FAMILIAR

    View Slide

  26. View Slide

  27. FAMILIAR

    View Slide

  28. FAMILIAR LESS BARRIERS

    View Slide

  29. MESSAGES SLACK
    TEAMS FACEBOOK

    View Slide

  30. BE WHERE YOUR USERS ARE

    View Slide

  31. PLATFORM SPECIFIC
    FUN STUFF
    BUSINESS STUFF

    View Slide

  32. MO’ MONEY

    View Slide

  33. FUN
    DEV CODE RUN BEEP-BOOP

    View Slide

  34. built today?
    CHATBOTS
    How are

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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


    USER: ‘U8324’,


    TEAM: ‘T4390’,


    MESSAGE: ‘/HELP’ }
    HOW SLACK WORKS

    View Slide

  40. JAVASCRIPT LIBRARIES

    View Slide

  41. JAVASCRIPT LIBRARIES

    View Slide

  42. View Slide

  43. View Slide

  44. Elixir?
    Why

    View Slide

  45. PROCESSES
    PANACEA
    CURES WHAT
    ALES ‘YA
    SPEED
    HOT CODE
    RELOADING
    FAULT TOLERANCE

    View Slide

  46. WHY ELIXIR?
    B U I LT O N E R L A N G
    ERLANG RELEASED ELIXIR RELEASED
    1986 2012

    View Slide

  47. WHY ELIXIR?

    View Slide

  48. WHY ELIXIR?
    BUILT FOR COMMUNICATION

    View Slide

  49. WHY ELIXIR?
    BUILT FOR COMMUNICATION
    90%

    View Slide

  50. WHY ELIXIR?
    BUILT FOR COMMUNICATION

    View Slide

  51. FAST
    WHY ELIXIR?

    View Slide

  52. WHY ELIXIR?
    https://github.com/mroth/phoenix-showdown/blob/master/README.md#benchmarking

    View Slide

  53. STATEFUL PROCESSES
    WHY ELIXIR?

    View Slide

  54. WHY ELIXIR?
    PROCESS PROCESS PROCESS
    SUPERVISOR

    View Slide

  55. HOT CODE RELOADING
    WHY ELIXIR?

    View Slide

  56. WHY ELIXIR?
    DEV APP
    PROCESS
    PROCESS
    V 1.0
    V 1.1
    V 1.1
    V 1.0
    V 1.1
    V 1.1
    V 1.1
    V 1.0
    V 1.1

    View Slide

  57. WHY ELIXIR?
    H O T C O D E R E L O A D I N G

    View Slide

  58. WHY ELIXIR?
    FAULT TOLERANT

    View Slide

  59. WHY ELIXIR?
    PROCESS PROCESS
    SUPERVISOR
    PROCESS

    View Slide

  60. be improved?
    CHATBOTS
    How can building

    View Slide

  61. PLUG
    MIDDLEWARE
    CONTEXT
    ROUTER
    CONTROLLER
    TEMPLATES

    View Slide

  62. View Slide

  63. JUVET/JUVET

    View Slide

  64. View Slide

  65. View Slide

  66. View Slide

  67. PLUG
    > LISTEN TO SPECIFIC ENDPOINTS
    > INTEGRATE INTO EXISTING APP

    View Slide

  68. PLUG

    View Slide

  69. PLUG
    E N D P O I N T

    View Slide

  70. PLUG
    R U N N E R

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  88. CONTEXT

    View Slide

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

    View Slide

  90. CONTROLLER

    View Slide

  91. CONTROLLER
    E X A M P L E

    View Slide

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

    View Slide

  93. TEMPLATES
    E X A M P L E

    View Slide

  94. like MVC Apps
    CHATBOTS
    The
    tr
    adeo
    ff
    s on building

    View Slide

  95. ROUTING
    A NICE


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

    View Slide

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

    View Slide

  97. 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

  98. 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

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

    View Slide

  100. HARDER TO DEBUG
    > (PHOENIX.ROUTER.NOROUTEERROR) NO ROUTE FOUND FOR POST /SLACK/ACTIONS (TATSUWEB.ROUTER)
    > (TATSU 0.0.11) LIB/PHOENIX/ROUTER.EX:405: TATSUWEB.ROUTER.CALL/2
    > (COWBOY 2.9.0) /TATSU_NEXT/DEPS/COWBOY/SRC/COWBOY_HANDLER.ERL:37: :COWBOY_HANDLER.EXECUTE/2


    > (TATSU 0.0.11) LIB/TATSU_WEB/ENDPOINT.EX:1: TATSUWEB.ENDPOINT.PLUG_BUILDER_CALL/2
    > …
    > …
    > …
    > …
    > …
    > …
    > …
    C A L L S T A C K

    View Slide

  101. Future
    ENHANCEMENTS

    View Slide

  102. DIALOGUE

    View Slide

  103. DIALOGUE

    View Slide

  104. DIALOGUE
    TATSUIO/DIALOGUE

    View Slide

  105. 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

  106. 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

  107. RANDOM ACCESS MEMORY
    DETECT PARAMETERS ALLOW CHANGE

    View Slide

  108. 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

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

    View Slide

  110. 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

  111. 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

  112. 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

  113. 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

  114. TATSU.IO

    View Slide

  115. GO FORTH + CREATE BOTS

    View Slide

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

    View Slide