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

Introducing Juvet - Building Bots in Elixir

Introducing Juvet - Building Bots in Elixir

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.

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.

Finally, we will learn how you can leverage metaprogramming in Elixir to build a router to help route requests from chat services to create a Phoenix-like experience for building chat apps.

Jamie Wright
PRO

August 30, 2022
Tweet

More Decks by Jamie Wright

Other Decks in Business

Transcript

  1. Elixir
    +
    CHATBOTS
    INTRODUCING JUVET

    View Slide

  2. WELCOME
    WELCOME
    WELCOME

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. AND I
    AM
    A
    BOT BUILDER™

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. Tatsu

    View Slide

  12. Tatsu

    View Slide

  13. A Brief In
    tr
    o
    CHATBOTS

    View Slide

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

    View Slide

  15. USER PLATFORM APP
    OPS CHANNEL
    /HELP
    OPS CHANNEL
    HERE IS THE HELP


    YOU REQUESTED:
    { CHANNEL: ‘C1234’,


    USER: ‘U8324’,


    TEAM: ‘T4390’,


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

    View Slide

  16. USER PLATFORM APP
    CLIENT SERVER

    View Slide

  17. J
    os
    eph
    WEIZENBAUM

    View Slide

  18. J
    os
    eph
    WEIZENBAUM

    View Slide

  19. View Slide

  20. View Slide

  21. Alan
    TURING

    View Slide

  22. ELIZA

    View Slide

  23. SIRI
    2 0 0 7

    View Slide

  24. 2 0 0 1

    View Slide

  25. View Slide

  26. View Slide

  27. RADIOHEAD
    IS
    ALWAYS
    AHEAD OF THEIR TIME™

    View Slide

  28. imp
    or
    tant?
    CHATBOTS
    Why are

    View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. WHAT
    OCCURRED
    AT THAT
    BASKETBALL GAME?

    View Slide

  41. View Slide

  42. FAMILIAR

    View Slide

  43. View Slide

  44. FAMILIAR

    View Slide

  45. FAMILIAR LESS BARRIERS

    View Slide

  46. MESSAGES SLACK
    TEAMS FACEBOOK

    View Slide

  47. BE WHERE YOUR USERS ARE

    View Slide

  48. PLATFORM SPECIFIC
    FUN STUFF
    BUSINESS STUFF

    View Slide

  49. MO’ MONEY

    View Slide

  50. View Slide

  51. FUN
    DEV CODE RUN BEEP-BOOP

    View Slide

  52. built today?
    CHATBOTS
    How are

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  57. USER PLATFORM APP
    OPS CHANNEL
    /HELP
    HOW SLACK WORKS
    { CHANNEL: ‘C1234’,


    USER: ‘U8324’,


    TEAM: ‘T4390’,


    MESSAGE: ‘/HELP’ }

    View Slide

  58. JAVASCRIPT LIBRARIES

    View Slide

  59. JAVASCRIPT LIBRARIES

    View Slide

  60. WORKER THREADS
    CPU PERFORMANCE
    SINGLE-
    THREADED
    EVENT LOOP
    UNHANDLED


    EXCEPTIONS
    NODE LIMITATIONS

    View Slide

  61. View Slide

  62. Elixir?
    Why

    View Slide

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

    View Slide

  64. WHY ELIXIR?
    BUILT FOR COMMUNICATION

    View Slide

  65. WHY ELIXIR?
    BUILT FOR COMMUNICATION
    90%

    View Slide

  66. WHY ELIXIR?
    BUILT FOR COMMUNICATION

    View Slide

  67. FAST
    WHY ELIXIR?

    View Slide

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

    View Slide

  69. STATEFUL PROCESSES
    WHY ELIXIR?

    View Slide

  70. WHY ELIXIR?
    PROCESS PROCESS PROCESS
    SUPERVISOR

    View Slide

  71. HOT CODE RELOADING
    WHY ELIXIR?

    View Slide

  72. WHY ELIXIR?
    FAULT TOLERANT

    View Slide

  73. WHY ELIXIR?
    PROCESS PROCESS
    SUPERVISOR
    PROCESS

    View Slide

  74. be improved?
    CHATBOTS
    How can building

    View Slide

  75. PLUG
    MIDDLEWARE
    CONTEXT
    ROUTER
    CONTROLLER
    TEMPLATES

    View Slide

  76. View Slide

  77. JUVET/JUVET

    View Slide

  78. View Slide

  79. View Slide

  80. View Slide

  81. View Slide

  82. View Slide

  83. NEXT.TATSU.IO

    View Slide

  84. LEBOTSKI

    View Slide

  85. View Slide

  86. LEBOTSKI
    DISPENSARIES BOWLING ALLEYS
    • COCKTAIL BARS

    View Slide

  87. LEBOWSKI COMMANDS
    / B E V E R A G E - H E R E - M A N

    View Slide

  88. LEBOTSKI
    DISPENSARIES BOWLING ALLEYS
    • COCKTAIL BARS

    View Slide

  89. Aaron
    DRAPLIN

    View Slide

  90. View Slide

  91. JWRIGHT/LEBOTSKI

    View Slide

  92. DEMO
    DEMO
    DEMO

    View Slide

  93. with Juvet?
    CHATBOTS
    Building

    View Slide

  94. JUVET WALKTHROUGH
    A D D D E P E N D E N C Y

    View Slide

  95. JUVET WALKTHROUGH
    A D D E X T R A A P P

    View Slide

  96. JUVET WALKTHROUGH
    S U P E R V I S I O N T R E E

    View Slide

  97. JUVET WALKTHROUGH
    S U P E R V I S I O N T R E E
    NEW LEBOWSKI
    APP FOR MY TEAM

    View Slide

  98. JUVET WALKTHROUGH
    C O N F I G U R E

    View Slide

  99. JUVET WALKTHROUGH
    B O T

    View Slide

  100. JUVET WALKTHROUGH
    R O U T E R

    View Slide

  101. JUVET WALKTHROUGH
    A D D P L U G

    View Slide

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

    View Slide

  103. JUVET WALKTHROUGH
    A D D C O M M A N D R O U T E

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  109. JUVET WALKTHROUGH
    C U S T O M M I D D L E W A R E

    View Slide

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

    View Slide

  111. JUVET WALKTHROUGH
    R O U T E R

    View Slide

  112. JUVET WALKTHROUGH
    C O N T R O L L E R

    View Slide

  113. CONTROLLER
    > ACTION PER REQUEST
    > PREPARE + SEND RESPONSE(S)

    View Slide

  114. JUVET WALKTHROUGH
    T E A M S C H E M A

    View Slide

  115. JUVET WALKTHROUGH
    U S E R S C H E M A

    View Slide

  116. JUVET WALKTHROUGH
    T E A M M AT E S C H E M A

    View Slide

  117. JUVET WALKTHROUGH
    C O N T R O L L E R

    View Slide

  118. T E M P L AT E

    View Slide

  119. JUVET WALKTHROUGH
    S E N D I N G T E M P L AT E

    View Slide

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

    View Slide

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

    View Slide

  122. ROUTING
    A NICE


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

    View Slide

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

    View Slide

  124. EVERYTHING HAS A PLACE
    TEMPLATES
    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

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

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

    View Slide

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

  128. Future
    ENHANCEMENTS

    View Slide

  129. DIALOGUE

    View Slide

  130. DIALOGUE
    R U B Y

    View Slide

  131. DIALOGUE
    TATSUIO/DIALOGUE

    View Slide

  132. ADDITIONAL PLATFORMS
    TWILIO
    TEAMS
    DISCORD
    SLACK
    ALEXA
    #01
    #02
    #03
    #04

    View Slide

  133. BETTER TEMPLATING
    COMPONENTS PARTIALS SEPARATE PLATFORMS

    View Slide

  134. IN-HOUSE AUTHENTICATION

    View Slide

  135. GENERATORS

    View Slide

  136. GENERATORS

    View Slide

  137. BETTER ERROR MESSAGES
    > (PHOENIX.ROUTER.NOROUTEERROR) NO ROUTE FOUND FOR POST /SLACK/ACTIONS (TATSUWEB.ROUTER)
    > …
    >…


    > …
    > …
    > …
    > …
    > …
    > ??? 💀😅
    C A L L S T A C K

    View Slide

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

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

  140. RANDOM ACCESS MEMORY
    DETECT PARAMETERS ALLOW CHANGE

    View Slide

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

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

    View Slide

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

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

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

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

  147. GO FORTH + CREATE BOTS

    View Slide

  148. JUVET/JUVET

    View Slide

  149. NEXT.TATSU.IO

    View Slide

  150. SPEAKERDECK.COM/JWRIGHT/
    ELIXIRCONF2022

    View Slide

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

    View Slide

  152. Q+A

    View Slide

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

    View Slide