SlideShare a Scribd company logo
Slack Bots With
Hedwig
Self Promotion
• Erik DeBill
• @edebill and @parsenome on twitter
• https://github.com/edebill
Spredfast Pays Me
• https://www.spredfast.com/
• We’ve got lots of really interesting problems and
a truly polyglot architecture
Hedwig Slack
• Plugin for hedwig-im
• You need to use the
github/master version instead
of published hex.pm
• Maintainer answers questions
in #hedwig channel on Elixir
slack
• Documentation is fairly good
for the basics
• See Elixir Sips episodes
Bootstrapping
• follow steps on Hedwig_slack
README
• mix new myapp —sup
• cd myapp
• add hedwig_slack to deps
• mix deps.get
• mix deps.compile
Robot Generator
• Works about like you’d expect
• Prompts you to add a worker
to your supervision tree. If you
didn’t add the —sup option
when you ran mix new this will
be hard to figure out
Config.exs
• Last of the boilerplate
• Follow README on how to
add to config.exs
• I recommend 2 tokens - one
dev, one test (rate limits will
eat you)
• Responders are where the
interesting stuff live
Getting a Token
Responders
• modules that use
Hedwig.Responder
• ‘hear’ and ‘respond’ macros
• chime in vs answer question
• can regex capture
At this point, we’ve
covered all the basics
from the docs
after_connect
• Called after connection
established
• Use to register bot so outside
code can find it
Sending Without
Responders
• Figure out pid for your bot
• Figure out channel id
(IO.inspect inside a responder
works great - these remain
stable forever)
• Format a Hedwig.Message
with room, text, and type
Suggestions
• “hear” responders will respond to ANYTHING that matches -
including help message output and things the bot says in a channel
• Generally stick to “respond” style responders
• Keep real app logic outside responders
• Consider starting with your bot inside an umbrella app
• Hedwig_slack locks a version of cowlib that conflicts with phoenix.
Can’t run them inside same app.
• Get 2 tokens (1 prod, 1 dev)
• Make a dedicated channel for bot testing
Erik DeBill
@edebill
erik@debill.org

More Related Content

What's hot

Composer at Scale, Release and Dependency Management
Composer at Scale, Release and Dependency ManagementComposer at Scale, Release and Dependency Management
Composer at Scale, Release and Dependency Management
Joe Ferguson
 
Phabricator Workflow
Phabricator WorkflowPhabricator Workflow
Phabricator Workflow
Michael Schuett
 
Phabricator presentation
Phabricator presentationPhabricator presentation
Phabricator presentation
Ihsan Fauzi Rahman
 
Phabricator gdg presentation
Phabricator gdg presentationPhabricator gdg presentation
Phabricator gdg presentation
Nizameddin Ordulu
 
Midwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small teamMidwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small team
Joe Ferguson
 
How to write better tests with Test Driven Development
How to write better tests with Test Driven DevelopmentHow to write better tests with Test Driven Development
How to write better tests with Test Driven Development
Alex Hoffman
 
Simple Unit Testing in Appcelerator Titanium Alloy
Simple Unit Testing in Appcelerator Titanium AlloySimple Unit Testing in Appcelerator Titanium Alloy
Simple Unit Testing in Appcelerator Titanium Alloy
Aaron Saunders
 
Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014
Emanuele Rampichini
 
Put an end to regression with codeception testing
Put an end to regression with codeception testingPut an end to regression with codeception testing
Put an end to regression with codeception testing
Joe Ferguson
 
Git and GitHub crash course
Git and GitHub crash courseGit and GitHub crash course
Git and GitHub crash course
Mireia Sangalo
 
A prentation on github
A prentation on githubA prentation on github
A prentation on github
Veronica Ojochona Michael (MCP)
 
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
Stefan Teixeira
 
Jakub Vrána: Code Reviews with Phabricator
Jakub Vrána: Code Reviews with PhabricatorJakub Vrána: Code Reviews with Phabricator
Jakub Vrána: Code Reviews with Phabricator
WebExpo
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)
Ford Prior
 
Latinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open sourceLatinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open source
Stefan Teixeira
 
Hacking on gems
Hacking on gemsHacking on gems
Hacking on gems
Evgeny Rahman
 
OSB15
OSB15OSB15
OSB15
karzilla
 
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
Stefan Teixeira
 
Story Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium FrameworkStory Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium Framework
Oleksiy Rezchykov
 
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecerTDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
Stefan Teixeira
 

What's hot (20)

Composer at Scale, Release and Dependency Management
Composer at Scale, Release and Dependency ManagementComposer at Scale, Release and Dependency Management
Composer at Scale, Release and Dependency Management
 
Phabricator Workflow
Phabricator WorkflowPhabricator Workflow
Phabricator Workflow
 
Phabricator presentation
Phabricator presentationPhabricator presentation
Phabricator presentation
 
Phabricator gdg presentation
Phabricator gdg presentationPhabricator gdg presentation
Phabricator gdg presentation
 
Midwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small teamMidwest PHP 2017 DevOps For Small team
Midwest PHP 2017 DevOps For Small team
 
How to write better tests with Test Driven Development
How to write better tests with Test Driven DevelopmentHow to write better tests with Test Driven Development
How to write better tests with Test Driven Development
 
Simple Unit Testing in Appcelerator Titanium Alloy
Simple Unit Testing in Appcelerator Titanium AlloySimple Unit Testing in Appcelerator Titanium Alloy
Simple Unit Testing in Appcelerator Titanium Alloy
 
Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014
 
Put an end to regression with codeception testing
Put an end to regression with codeception testingPut an end to regression with codeception testing
Put an end to regression with codeception testing
 
Git and GitHub crash course
Git and GitHub crash courseGit and GitHub crash course
Git and GitHub crash course
 
A prentation on github
A prentation on githubA prentation on github
A prentation on github
 
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
 
Jakub Vrána: Code Reviews with Phabricator
Jakub Vrána: Code Reviews with PhabricatorJakub Vrána: Code Reviews with Phabricator
Jakub Vrána: Code Reviews with Phabricator
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)
 
Latinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open sourceLatinoware 2016 - Continuous Delivery com ferramentas open source
Latinoware 2016 - Continuous Delivery com ferramentas open source
 
Hacking on gems
Hacking on gemsHacking on gems
Hacking on gems
 
OSB15
OSB15OSB15
OSB15
 
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
TDC 2016 SP - Continuous Delivery para aplicações Java com ferramentas open-s...
 
Story Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium FrameworkStory Testing Approach for Enterprise Applications using Selenium Framework
Story Testing Approach for Enterprise Applications using Selenium Framework
 
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecerTDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
TDC 2016 SP - 5 libs de teste JavaScript que você deveria conhecer
 

Viewers also liked

Minnesota D-Star Disaster Network
Minnesota D-Star Disaster Network Minnesota D-Star Disaster Network
Minnesota D-Star Disaster Network
Erik Westgard
 
Instrucciones Para Solicitar Subastas Cliente
Instrucciones Para Solicitar Subastas ClienteInstrucciones Para Solicitar Subastas Cliente
Instrucciones Para Solicitar Subastas Cliente
Rafa Moreno
 
Jornada de Medios de Pago Online - François Hélard, Adyen
Jornada de Medios de Pago Online - François Hélard, AdyenJornada de Medios de Pago Online - François Hélard, Adyen
Jornada de Medios de Pago Online - François Hélard, Adyen
AECEM - Asociación Española de Comercio Electrónico y Marketing Relacional
 
Mow : una experiencia con ROR
Mow : una experiencia con RORMow : una experiencia con ROR
Mow : una experiencia con ROR
Joaquín Salvachúa
 
Velfærdsteknologi til ældreplejen
Velfærdsteknologi til ældreplejenVelfærdsteknologi til ældreplejen
Velfærdsteknologi til ældreplejen
IS IT A BIRD
 
Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...
Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...
Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...
ponencias_mihealth2012
 
Practical Solutions To Internet Marketing Legal Compliance, pt 2
Practical Solutions To Internet Marketing Legal Compliance, pt 2Practical Solutions To Internet Marketing Legal Compliance, pt 2
Practical Solutions To Internet Marketing Legal Compliance, pt 2
Affiliate Summit
 
2008 comp-cuantica
2008 comp-cuantica2008 comp-cuantica
2008 comp-cuantica
74689899
 
Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...
Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...
Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...
Petiano Camilo Bin
 
Brochure 32 page-english
Brochure 32 page-englishBrochure 32 page-english
Brochure 32 page-english
jumiss
 
Violations of press freedom in Τurkey
Violations of press freedom in ΤurkeyViolations of press freedom in Τurkey
Violations of press freedom in Τurkey
augofetas
 
Casimiro liceaga
Casimiro liceagaCasimiro liceaga
Casimiro liceaga
Ignacio Cervantes Sabanero
 
Soco java games 2011
Soco java games 2011Soco java games 2011
Soco java games 2011
鳳凰娛樂遊戲有限公司
 
How ICT is shaping Travel and Tourism landscapes
How ICT is shaping Travel and Tourism landscapesHow ICT is shaping Travel and Tourism landscapes
How ICT is shaping Travel and Tourism landscapes
indikaMaligaspe
 
Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...
Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...
Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...
Family Constellation
 
Spanish M2 ¿Qué quieres tomar?
Spanish M2 ¿Qué quieres tomar?Spanish M2 ¿Qué quieres tomar?
Spanish M2 ¿Qué quieres tomar?
eLearningJa
 
Evasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamar
Evasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamarEvasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamar
Evasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamar
INCIDE
 
Acid And Base
Acid And BaseAcid And Base
Acid And Base
Faridah Hamat
 
Aula digital movil paso a paso
Aula digital movil paso a pasoAula digital movil paso a paso
Aula digital movil paso a paso
Escuela
 
Lavacon 2014 - The state of mobile publishing
Lavacon 2014 -  The state of mobile publishingLavacon 2014 -  The state of mobile publishing
Lavacon 2014 - The state of mobile publishing
Vikram Verma
 

Viewers also liked (20)

Minnesota D-Star Disaster Network
Minnesota D-Star Disaster Network Minnesota D-Star Disaster Network
Minnesota D-Star Disaster Network
 
Instrucciones Para Solicitar Subastas Cliente
Instrucciones Para Solicitar Subastas ClienteInstrucciones Para Solicitar Subastas Cliente
Instrucciones Para Solicitar Subastas Cliente
 
Jornada de Medios de Pago Online - François Hélard, Adyen
Jornada de Medios de Pago Online - François Hélard, AdyenJornada de Medios de Pago Online - François Hélard, Adyen
Jornada de Medios de Pago Online - François Hélard, Adyen
 
Mow : una experiencia con ROR
Mow : una experiencia con RORMow : una experiencia con ROR
Mow : una experiencia con ROR
 
Velfærdsteknologi til ældreplejen
Velfærdsteknologi til ældreplejenVelfærdsteknologi til ældreplejen
Velfærdsteknologi til ældreplejen
 
Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...
Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...
Shahaf, Ophir - I3: Innovation, Infraestructure & Investment – Drivers of Res...
 
Practical Solutions To Internet Marketing Legal Compliance, pt 2
Practical Solutions To Internet Marketing Legal Compliance, pt 2Practical Solutions To Internet Marketing Legal Compliance, pt 2
Practical Solutions To Internet Marketing Legal Compliance, pt 2
 
2008 comp-cuantica
2008 comp-cuantica2008 comp-cuantica
2008 comp-cuantica
 
Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...
Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...
Avaliação de argamassas com entulho reciclados, por procedimentos racionais d...
 
Brochure 32 page-english
Brochure 32 page-englishBrochure 32 page-english
Brochure 32 page-english
 
Violations of press freedom in Τurkey
Violations of press freedom in ΤurkeyViolations of press freedom in Τurkey
Violations of press freedom in Τurkey
 
Casimiro liceaga
Casimiro liceagaCasimiro liceaga
Casimiro liceaga
 
Soco java games 2011
Soco java games 2011Soco java games 2011
Soco java games 2011
 
How ICT is shaping Travel and Tourism landscapes
How ICT is shaping Travel and Tourism landscapesHow ICT is shaping Travel and Tourism landscapes
How ICT is shaping Travel and Tourism landscapes
 
Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...
Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...
Bert Hellinger - Love's Own Truths - Bonding and Balancing in Close Relations...
 
Spanish M2 ¿Qué quieres tomar?
Spanish M2 ¿Qué quieres tomar?Spanish M2 ¿Qué quieres tomar?
Spanish M2 ¿Qué quieres tomar?
 
Evasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamar
Evasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamarEvasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamar
Evasion_AVs_Uso_de_Crypters-MundoHackerDay_2k14_apasamar
 
Acid And Base
Acid And BaseAcid And Base
Acid And Base
 
Aula digital movil paso a paso
Aula digital movil paso a pasoAula digital movil paso a paso
Aula digital movil paso a paso
 
Lavacon 2014 - The state of mobile publishing
Lavacon 2014 -  The state of mobile publishingLavacon 2014 -  The state of mobile publishing
Lavacon 2014 - The state of mobile publishing
 

Similar to Austin Elixir: Slack Bots With Hedwig

Modern Module Development
Modern Module DevelopmentModern Module Development
Modern Module Development
_morgan
 
How to Contribute to Ansible
How to Contribute to AnsibleHow to Contribute to Ansible
How to Contribute to Ansible
Cisco DevNet
 
Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1
Andrei KUCHARAVY
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013
Ben Corlett
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
Virtual JBoss User Group
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Gaetano Giunta
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Mozaic Works
 
GitHub Actions Security - DDOG
GitHub Actions Security - DDOGGitHub Actions Security - DDOG
GitHub Actions Security - DDOG
RobBos10
 
git and github
git and githubgit and github
git and github
Darren Oakley
 
GitHub Actions Security
GitHub Actions SecurityGitHub Actions Security
GitHub Actions Security
RobBos10
 
'Using' github - coworking with Github
'Using' github - coworking with Github'Using' github - coworking with Github
'Using' github - coworking with Github
수빈 최
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
Derek Jacoby
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
Derek Jacoby
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017
Mandi Walls
 
CDI In Real Life
CDI In Real LifeCDI In Real Life
CDI In Real Life
Antoine Sabot-Durand
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deployment
heyrocker
 
Building a Simple Theme Framework
Building a Simple Theme FrameworkBuilding a Simple Theme Framework
Building a Simple Theme Framework
Joe Casabona
 
Intro to Git for Drupal 7
Intro to Git for Drupal 7Intro to Git for Drupal 7
Intro to Git for Drupal 7
Chris Caple
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
JBUG London
 

Similar to Austin Elixir: Slack Bots With Hedwig (20)

Modern Module Development
Modern Module DevelopmentModern Module Development
Modern Module Development
 
How to Contribute to Ansible
How to Contribute to AnsibleHow to Contribute to Ansible
How to Contribute to Ansible
 
Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1Introduction to the intermediate Python - v1.1
Introduction to the intermediate Python - v1.1
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
 
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
Aki Salmi - Refactoring legacy code: a true story @ I T.A.K.E. Unconference 2...
 
GitHub Actions Security - DDOG
GitHub Actions Security - DDOGGitHub Actions Security - DDOG
GitHub Actions Security - DDOG
 
git and github
git and githubgit and github
git and github
 
GitHub Actions Security
GitHub Actions SecurityGitHub Actions Security
GitHub Actions Security
 
'Using' github - coworking with Github
'Using' github - coworking with Github'Using' github - coworking with Github
'Using' github - coworking with Github
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
 
Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017Habitat Workshop at Velocity London 2017
Habitat Workshop at Velocity London 2017
 
CDI In Real Life
CDI In Real LifeCDI In Real Life
CDI In Real Life
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deployment
 
Building a Simple Theme Framework
Building a Simple Theme FrameworkBuilding a Simple Theme Framework
Building a Simple Theme Framework
 
Intro to Git for Drupal 7
Intro to Git for Drupal 7Intro to Git for Drupal 7
Intro to Git for Drupal 7
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 

Recently uploaded

Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
Ayan Halder
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 

Recently uploaded (20)

Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 

Austin Elixir: Slack Bots With Hedwig

  • 2. Self Promotion • Erik DeBill • @edebill and @parsenome on twitter • https://github.com/edebill
  • 3. Spredfast Pays Me • https://www.spredfast.com/ • We’ve got lots of really interesting problems and a truly polyglot architecture
  • 4. Hedwig Slack • Plugin for hedwig-im • You need to use the github/master version instead of published hex.pm • Maintainer answers questions in #hedwig channel on Elixir slack • Documentation is fairly good for the basics • See Elixir Sips episodes
  • 5. Bootstrapping • follow steps on Hedwig_slack README • mix new myapp —sup • cd myapp • add hedwig_slack to deps • mix deps.get • mix deps.compile
  • 6. Robot Generator • Works about like you’d expect • Prompts you to add a worker to your supervision tree. If you didn’t add the —sup option when you ran mix new this will be hard to figure out
  • 7. Config.exs • Last of the boilerplate • Follow README on how to add to config.exs • I recommend 2 tokens - one dev, one test (rate limits will eat you) • Responders are where the interesting stuff live
  • 9. Responders • modules that use Hedwig.Responder • ‘hear’ and ‘respond’ macros • chime in vs answer question • can regex capture
  • 10. At this point, we’ve covered all the basics from the docs
  • 11. after_connect • Called after connection established • Use to register bot so outside code can find it
  • 12. Sending Without Responders • Figure out pid for your bot • Figure out channel id (IO.inspect inside a responder works great - these remain stable forever) • Format a Hedwig.Message with room, text, and type
  • 13. Suggestions • “hear” responders will respond to ANYTHING that matches - including help message output and things the bot says in a channel • Generally stick to “respond” style responders • Keep real app logic outside responders • Consider starting with your bot inside an umbrella app • Hedwig_slack locks a version of cowlib that conflicts with phoenix. Can’t run them inside same app. • Get 2 tokens (1 prod, 1 dev) • Make a dedicated channel for bot testing