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 in how we interact with companies through software. Users feel comfortable naturally talking with their applications through chatbots. 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

July 14, 2018
Tweet

More Decks by Jamie Wright

Other Decks in Programming

Transcript

  1. But I was going to go into Tosche Station to

    pick up some power converters… " emoji-bot
  2. Can you schedule a meeting for tomorrow with Jim and

    Tim? Which Jim do you want me to schedule a meeting with? 1. Jim F. 2. Jim P. Sure. It looks like the afternoon is best. Do you want me to schedule this for then? Meeting invite went out for 2PM tomorrow to everyone. I will follow up to confirm everyone is booked. Ok. There is no more free time tomorrow. Do you want me to try for Wednesday? Multiple contacts "Yes" "No"
  3. R.A.N random access navigation Can you schedule a meeting? I

    sure can. With whom? With Tim Got it. When?
  4. R.A.N random access navigation Can you schedule a meeting? I

    sure can. With whom? With Tim Got it. When? Tomorrow at 2
  5. R.A.N random access navigation Can you schedule a meeting? I

    sure can. With whom? With Tim Got it. When? Tomorrow at 2 Done. I scheduled your meeting with Tim for tomorrow at 2.
  6. R.A.N random access navigation Can you schedule a meeting with

    Tim for tomorrow at 2? Done. I scheduled your meeting with Tim for tomorrow at 2.
  7. R.A.N random access navigation Can you schedule a meeting with

    Tim for tomorrow at 2? Done. I scheduled your meeting with Tim for tomorrow at 2. Actually can you make it for 3?
  8. R.A.N random access navigation Can you schedule a meeting with

    Tim for tomorrow at 2? Done. I scheduled your meeting with Tim for tomorrow at 2. Actually can you make it for 3? Done. I re-scheduled it with Tim for 3 tomorrow.
  9. Discoverability Meeting scheduled! Did you know you can reschedule by

    just saying "reschedule meeting with Dave"?
  10. Validation I'm sorry, "blerg" is not an answer. You can

    say "yes" or "no". Are you available to meet with Andy today at 2PM?
  11. Selection Where do you want to meet tonight with MacKenzie?

    1. Coffee Shop 2. Restaurant for dinner 3. Local bar 1
  12. Gender Neutral are you a boy or a girl? Neither.

    Those X-Wing pods are skinny. I would not fit with any extra parts.
  13. Beer Test Just keep me away from those Jawas and

    we'll be cool. you are my best friend
  14. Different Responses how come you had rocket feet early on

    but then you didn't after episode 3? They were using potatoes for special effects in the first 3 movies. How would they pull off rocket feet?
  15. Different Responses Yeah, but how do you explain Jabba the

    Hutt in the special edition? They were using potatoes for special effects in the first 3. How would they pull off rocket feet?
  16. Use Their Surroundings Dagobah did not look like a pleasant

    place! It's 70 degrees in February where you're at. Global warming is affecting all systems.
  17. Fallback Can you blerg? I'm sorry, that oil bath got

    into some of my circuits. What were you saying?
  18. oauth response {"provider"=>"slack", "uid"=>"UXXXXXXX", "info"=> {"nickname"=>"jwright", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX",

    "user_id"=>"UXXXXXX", "name"=>nil, "email"=>nil, "first_name"=>nil, # … }, "credentials"=> {"token"=>"xoxp-XXXXX-XXXXXXX-XXXXXX", "expires"=>false}, "extra"=> {"raw_info"=> {"ok"=>true, "url"=>"https://bf.slack.com/", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX", "user_id"=>"UXXXXXX"}, "web_hook_info"=>{}, "bot_info"=> {"bot_user_id"=>"UXXXXXX", "bot_access_token"=>"xoxb-XXXXXX-XXXXXXXX"}}}}
  19. oauth response {"provider"=>"slack", "uid"=>"UXXXXXXX", "info"=> {"nickname"=>"jwright", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX",

    "user_id"=>"UXXXXXX", "name"=>nil, "email"=>nil, "first_name"=>nil, # … }, "credentials"=> {"token"=>"xoxp-XXXXX-XXXXXXX-XXXXXX", "expires"=>false}, "extra"=> {"raw_info"=> {"ok"=>true, "url"=>"https://bf.slack.com/", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX", "user_id"=>"UXXXXXX"}, "web_hook_info"=>{}, "bot_info"=> {"bot_user_id"=>"UXXXXXX", "bot_access_token"=>"xoxb-XXXXXX-XXXXXXXX"}}}}
  20. oauth response {"provider"=>"slack", "uid"=>"UXXXXXXX", "info"=> {"nickname"=>"jwright", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX",

    "user_id"=>"UXXXXXX", "name"=>nil, "email"=>nil, "first_name"=>nil, # … }, "credentials"=> {"token"=>"xoxp-XXXXX-XXXXXXX-XXXXXX", "expires"=>false}, "extra"=> {"raw_info"=> {"ok"=>true, "url"=>"https://bf.slack.com/", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX", "user_id"=>"UXXXXXX"}, "web_hook_info"=>{}, "bot_info"=> {"bot_user_id"=>"UXXXXXX", "bot_access_token"=>"xoxb-XXXXXX-XXXXXXXX"}}}}
  21. oauth response {"provider"=>"slack", "uid"=>"UXXXXXXX", "info"=> {"nickname"=>"jwright", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX",

    "user_id"=>"UXXXXXX", "name"=>nil, "email"=>nil, "first_name"=>nil, # … }, "credentials"=> {"token"=>"xoxp-XXXXX-XXXXXXX-XXXXXX", "expires"=>false}, "extra"=> {"raw_info"=> {"ok"=>true, "url"=>"https://bf.slack.com/", "team"=>"Brilliant Fantastic", "user"=>"jwright", "team_id"=>"TXXXXXX", "user_id"=>"UXXXXXX"}, "web_hook_info"=>{}, "bot_info"=> {"bot_user_id"=>"UXXXXXX", "bot_access_token"=>"xoxb-XXXXXX-XXXXXXXX"}}}}
  22. Natural language processing Is BB8 ready to go? intent: entities:

    charge_status target: "BB8" status: "ready"
  23. Natural language processing Is BB8 ready to go? intent: entities:

    confidence: charge_status target: "BB8" status: "ready" 0.82
  24. I know I'm not as difficult to build as that

    pain in the ass gold-plated primadonna. go and build bots