The document provides instructions for creating an app for Slack using the Slack API. It outlines the steps to get the sample code from Glitch, create a new Slack app, add a bot user, install the app to a workspace, and configure events and permissions. It then reviews the code files, pointing out where a bug occurred that prevented the dialog box from opening when a user chose to play the Two Truths and a Lie game. The bug is fixed by adding a trigger_id parameter to the dialog opening function.
Email authentication using firebase auth + flutterKaty Slemon
Learn about building a demo application from scratch and implementing email authentication using Firebase auth + flutter with a ready github repository.
Firebase crashlytics integration in iOS swift (dSYM File Required Problem Res...InnovationM
Nowadays, Firebase Crashlytics is a very important part of our projects to monitor crashes of our applications that may be an android or iOS application. For the time being it is an unbeatable tool to log your day to day crashes for each user of your application.
Tired of rebuilding your brand's UI in every new app your team works on? Whatever happened to DRY? This is exactly the reason why you should use a robust UI kit, like the AtlasKit, or build your own from scratch.
In this talk, Árni Freyr Snorrason, Developer and Team Lead at Tempo, will share Tempo's journey into the world of custom UI kits. He'll share how Tempo's growing visual identity for its products across multiple ecosystems, (most notably Jira Cloud and Jira Server) led to the decision to design, implement and maintain their very own Tempo UI kit, and also how the kit proved to be a crucial tool for developers to move faster and become more autonomous when developing front end features for cloud and server at the same time.
Email authentication using firebase auth + flutterKaty Slemon
Learn about building a demo application from scratch and implementing email authentication using Firebase auth + flutter with a ready github repository.
Firebase crashlytics integration in iOS swift (dSYM File Required Problem Res...InnovationM
Nowadays, Firebase Crashlytics is a very important part of our projects to monitor crashes of our applications that may be an android or iOS application. For the time being it is an unbeatable tool to log your day to day crashes for each user of your application.
Tired of rebuilding your brand's UI in every new app your team works on? Whatever happened to DRY? This is exactly the reason why you should use a robust UI kit, like the AtlasKit, or build your own from scratch.
In this talk, Árni Freyr Snorrason, Developer and Team Lead at Tempo, will share Tempo's journey into the world of custom UI kits. He'll share how Tempo's growing visual identity for its products across multiple ecosystems, (most notably Jira Cloud and Jira Server) led to the decision to design, implement and maintain their very own Tempo UI kit, and also how the kit proved to be a crucial tool for developers to move faster and become more autonomous when developing front end features for cloud and server at the same time.
Intro to IBM Bluemix DevOps Services, an open lab for IBM InterConnectLauren Hayward Schaefer
NOTE: The MongoLab service referenced in this tutorial is no longer available in the Bluemix catalog. See http://www.slideshare.net/LaurenHaywardSchaefe/intro-to-ibm-bluemix-devops-services-a-workshop-with-a-cloudant-twist for an updated version of this tutorial that uses Cloudant instead.
Looking for the latest, most up-to-date steps? See these developerWorks articles:
Intro to IBM Bluemix DevOps Services, Parts 1 - 4 (http://www.ibm.com/developerworks/cloud/library/cl-intro1-app/index.html)
Develop Node.js apps without leaving your browser (https://www.ibm.com/developerworks/library/wa-develop-deploy-debug-app/)
In this lab, you’ll get an introduction to using DevOps Services to deploy apps to Bluemix. You’ll discover how you can use Bluemix services to significantly speed up your development time. And you’ll learn how to create a delivery pipeline, so you can dive into the wonderful world of DevOps.
Join us as we go over how to make a custom Lightning component utilizing Angular's Material Design framework. We'll cover how to build Salesforce Lightning components that will display your Salesforce data in high quality Material Design-centric views. We will go over the step-by-step process of configuring a Lightning component to work using AngularJS and Angular Material Design. We'll discuss the parts of a Lightning component, how to architect your Angular code, how to load dependencies, and finally, integrating your Angular code with the Lightning component code. We will then review the components of the Material Design library and learn how to utilize the features to create a sleek interface. We'll end with an overview of tools and common issues or considerations.
Sitecore DevOps Automating your Sitecore Deployments by Naveed Ahmad DC Sitecore User Group
In this presentation, Naveed Ahmad will explain how to automate your Sitecore deployments and give an overview of the tools and technologies required to achieve it. The talk will also include a live demo using TeamCity, Hedgehog TDS and Sitecore Ship.
The keynote slideshow explains about the watch os architecture and watch app lifecycle. It explains about how watch app is linked with iOS application.
Those on the front lines during this pandemic need quick, easy access to real-time critical data. This type of information exchange is what APIs do best, and the API community has been stepping up to meet the challenge throughout the crisis. But there's always more to do. If you'd like to join the fight, this webinar is for you regardless of whether you're new to APIs or a knowledgeable Postman expert.
In this webinar led by Postman Chief Evangelist Kin Lane, you'll learn:
How APIs aid pandemic response measures
How you can publish new APIs related to COVID-19
How Open Referral data standards make it easier for you to share, find and use information about health, human, and social services
How you can contribute to the COVID-19 Testing Locations website, and how APIs power that website
What reputable information and tools are currently available for the COVID-19 efforts
Automatic Test Results Publishing using SlackYelitza Ruales
This presentation will show you how to use two different types of configurations that Slack provides for Automated Testing. You can implement them into your application to make testing more efficient and share results for all team members. By using Slack's Automated Testing configuration, you can leverage its existing platform and take your projects to the next level.
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...Postman
Presenters: Trent McCann, Engineering Manager, Quality, and Danny Dainton, Senior Quality Engineer
Description: Testing APIs is difficult, it's hard to know where to start. Join us as we take you through some of the different techniques and strategies, using Postman. We will walk you through the basics of Testing using Postman and help answer the questions of "Why do you test?" And "How do you write a test?". We will also talk about making these tests work for you. Pulling it all together and making these tests effective and efficient using Automation practices. Lastly, we will walk you through how to track, trend and some of the hidden benefits of Reporting in Postman, to get the most out of your tests.
Angular2 + Ng-Lightning + Lightning Design System = Great AppsEmily Hurn
In this deck, learn how to use the Ng-Lightning library to create and utilize Lightning designed Angular 2 components while going over the new features available in Angular 2. We’ll go over the basic principles behind Angular 2, the Lightning Design System, and features in TypeScript that you can leverage to create maintainable high-quality code. In addition, the talk will cover tools like Augury to debug your Angular 2 code and helpful plugins and IDEs for coding in TypeScript.
Postman Webinar: "From APIs to Serverless Cloud Applications in Minutes"Postman
Nimbella is a leading serverless cloud computing platform for developers. In this webinar, Postman's Kin Lane and Nimbella's Rodric Rabbah will discuss Nimbella’s integration for Postman and demonstrate the full developer experience, including how you can go from API to fully operational cloud application in minutes.
Intro to IBM Bluemix DevOps Services, a Workshop with a Cloudant twistLauren Hayward Schaefer
Have you found my Intro to IBM Bluemix DevOps Services open lab (http://www.slideshare.net/LaurenHaywardSchaefe/open-lab-44892944) or article series (http://www.ibm.com/developerworks/cloud/library/cl-intro1-app/index.html) and wished the database was Cloudant instead of MongoLab? Your wish is my command!
This workshop will introduce you to the basics of deploying to Bluemix, planning your work, coding in the web IDE, creating a delivery pipeline, and debugging your Bluemix app. And you'll even get to use Cloudant!
Do you feel trouble finding everything related to Appium set up in a single place during Automation env set up and unable to understand a few things like what is WebdriverAgent, Carthage? Why are provisioning profile and code signing required in the iOS Appium setup, and what does it mean? then it's for you.
it will help you with Appium set up in android and iOS devices on Mac OS.
Intro to IBM Bluemix DevOps Services, an open lab for IBM InterConnectLauren Hayward Schaefer
NOTE: The MongoLab service referenced in this tutorial is no longer available in the Bluemix catalog. See http://www.slideshare.net/LaurenHaywardSchaefe/intro-to-ibm-bluemix-devops-services-a-workshop-with-a-cloudant-twist for an updated version of this tutorial that uses Cloudant instead.
Looking for the latest, most up-to-date steps? See these developerWorks articles:
Intro to IBM Bluemix DevOps Services, Parts 1 - 4 (http://www.ibm.com/developerworks/cloud/library/cl-intro1-app/index.html)
Develop Node.js apps without leaving your browser (https://www.ibm.com/developerworks/library/wa-develop-deploy-debug-app/)
In this lab, you’ll get an introduction to using DevOps Services to deploy apps to Bluemix. You’ll discover how you can use Bluemix services to significantly speed up your development time. And you’ll learn how to create a delivery pipeline, so you can dive into the wonderful world of DevOps.
Join us as we go over how to make a custom Lightning component utilizing Angular's Material Design framework. We'll cover how to build Salesforce Lightning components that will display your Salesforce data in high quality Material Design-centric views. We will go over the step-by-step process of configuring a Lightning component to work using AngularJS and Angular Material Design. We'll discuss the parts of a Lightning component, how to architect your Angular code, how to load dependencies, and finally, integrating your Angular code with the Lightning component code. We will then review the components of the Material Design library and learn how to utilize the features to create a sleek interface. We'll end with an overview of tools and common issues or considerations.
Sitecore DevOps Automating your Sitecore Deployments by Naveed Ahmad DC Sitecore User Group
In this presentation, Naveed Ahmad will explain how to automate your Sitecore deployments and give an overview of the tools and technologies required to achieve it. The talk will also include a live demo using TeamCity, Hedgehog TDS and Sitecore Ship.
The keynote slideshow explains about the watch os architecture and watch app lifecycle. It explains about how watch app is linked with iOS application.
Those on the front lines during this pandemic need quick, easy access to real-time critical data. This type of information exchange is what APIs do best, and the API community has been stepping up to meet the challenge throughout the crisis. But there's always more to do. If you'd like to join the fight, this webinar is for you regardless of whether you're new to APIs or a knowledgeable Postman expert.
In this webinar led by Postman Chief Evangelist Kin Lane, you'll learn:
How APIs aid pandemic response measures
How you can publish new APIs related to COVID-19
How Open Referral data standards make it easier for you to share, find and use information about health, human, and social services
How you can contribute to the COVID-19 Testing Locations website, and how APIs power that website
What reputable information and tools are currently available for the COVID-19 efforts
Automatic Test Results Publishing using SlackYelitza Ruales
This presentation will show you how to use two different types of configurations that Slack provides for Automated Testing. You can implement them into your application to make testing more efficient and share results for all team members. By using Slack's Automated Testing configuration, you can leverage its existing platform and take your projects to the next level.
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...Postman
Presenters: Trent McCann, Engineering Manager, Quality, and Danny Dainton, Senior Quality Engineer
Description: Testing APIs is difficult, it's hard to know where to start. Join us as we take you through some of the different techniques and strategies, using Postman. We will walk you through the basics of Testing using Postman and help answer the questions of "Why do you test?" And "How do you write a test?". We will also talk about making these tests work for you. Pulling it all together and making these tests effective and efficient using Automation practices. Lastly, we will walk you through how to track, trend and some of the hidden benefits of Reporting in Postman, to get the most out of your tests.
Angular2 + Ng-Lightning + Lightning Design System = Great AppsEmily Hurn
In this deck, learn how to use the Ng-Lightning library to create and utilize Lightning designed Angular 2 components while going over the new features available in Angular 2. We’ll go over the basic principles behind Angular 2, the Lightning Design System, and features in TypeScript that you can leverage to create maintainable high-quality code. In addition, the talk will cover tools like Augury to debug your Angular 2 code and helpful plugins and IDEs for coding in TypeScript.
Postman Webinar: "From APIs to Serverless Cloud Applications in Minutes"Postman
Nimbella is a leading serverless cloud computing platform for developers. In this webinar, Postman's Kin Lane and Nimbella's Rodric Rabbah will discuss Nimbella’s integration for Postman and demonstrate the full developer experience, including how you can go from API to fully operational cloud application in minutes.
Intro to IBM Bluemix DevOps Services, a Workshop with a Cloudant twistLauren Hayward Schaefer
Have you found my Intro to IBM Bluemix DevOps Services open lab (http://www.slideshare.net/LaurenHaywardSchaefe/open-lab-44892944) or article series (http://www.ibm.com/developerworks/cloud/library/cl-intro1-app/index.html) and wished the database was Cloudant instead of MongoLab? Your wish is my command!
This workshop will introduce you to the basics of deploying to Bluemix, planning your work, coding in the web IDE, creating a delivery pipeline, and debugging your Bluemix app. And you'll even get to use Cloudant!
Do you feel trouble finding everything related to Appium set up in a single place during Automation env set up and unable to understand a few things like what is WebdriverAgent, Carthage? Why are provisioning profile and code signing required in the iOS Appium setup, and what does it mean? then it's for you.
it will help you with Appium set up in android and iOS devices on Mac OS.
A progressive web app (PWA) delivers an app-like experience through your mobile phone’s browser but has the same flexibility and gestures as a native application. Because they are powered by mobile browsers, they are not particular to any one device, meaning developers no longer need to write separate code for Android and Apple devices.
This guide provides a step-by-step walkthrough of releasing a Flutter app to the Play Store, App Store, TestFlight, and Preliminaries. https://bit.ly/3iNs9N8
A Grace Hopper Celebration of Women in Computing Workshop
Development tools installed on your PC? SO LAST YEAR! By leveraging Platforms as a Service, Software as a Service, and DevOps techniques, you can develop the next great app without ever leaving your web browser.
Bring your laptop or tablet, and get ready to code! You’ll leave this session with a running app and the knowledge you need to lead your team into the wonderful world of cloud computing.
#ghc15
Learn about the Lightning Components Framework which helps you develop component based apps which are compatible
with Salesforce1 and Lightning Experience.
This presentation was presented at the New Delhi Salesforce DG and #SalesforceSaturday session on 23rd April, 2016 in New Delhi.
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
Today’s cutting-edge companies have software release cycles measured in days instead of months. This agility is enabled by the DevOps practice of continuous delivery, which automates building, testing, and deploying all code changes. This automation helps you catch bugs sooner and accelerates developer productivity. In this session, we’ll share the processes that Amazon’s engineers use to practice DevOps and discuss how you can bring these processes to your company by using a new set of AWS tools (AWS CodePipeline and AWS CodeDeploy). These services were inspired by Amazon's own internal developer tools and DevOps culture.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
2. 2
Build Apps for Slack+
Welcome! My name is
Binod Jung Bogati.
1
2
3
I'm here to lead this session & help you
learn something new today!
I'm a SPC: Kathmandu Chapter Lead.
My favorite programming language / tool
is Python, R & JS (newbie).
3. 3
Using your Web Browser,
Open this URL & Fill out the Form:
http://mlhlocal.host/checkin
Afterwards, Check your Email to Find:
● Setup Instructions
● An Invite to the MLH Slack
● The Code Samples
● A Workshop FAQ
● These Workshop Slides
● More Learning Resources
1
2
4. Build Apps for Slack+
4
What will you learn today?
1
2
3
How to create an app for a Slack workspace
using the Slack API
How to configure a Slack app
How to add a super cool game to your Slack
workspace!
5. Table of Contents
1. Introduction to Apps for Slack
2. Configure and Try the App
3. Review and Update the Code
4. Review & Quiz
5. Next Steps
5
Build Apps for Slack+
6. Build Apps for Slack+
6
Slack is a set of cloud based tools to make
communication at work better.
● 8,000 customers signed up for the service within 24 hours
of its launch in August 2013.
● As of May 2018, Slack has 8 million daily active users.
● Over 94% of paid Slack teams use apps.
What is ?
7. Build Apps for Slack+
7
● Send rich notifications into Slack from other services
● Use buttons, drop down menus, and dialog modals to send data
back out of Slack to other tools
● Use conversational bots to have your app participate in channels
What can Apps do?
8. Build Apps for Slack+
8
We’re going to write a Two Truths and a Lie game that you can add to a
Slack workspace! When someone joins your workspace, you can play this
game as a way to get to know each other.
What We’ll Do with the Slack API
9. Build Apps for Slack+
9
A few people in the room should go to the URL below, join the Slack
organization, and try out the game! Not everyone has to play immediately
– you can look on each other's screens.
mlhlocal.host/localhostslack
1. Go the URL above and join!
2. Open the workspace.
3. Join the #twotruths channel
4. Play!
Let’s Test it Out!
10. Build Apps for Slack+
10
There are several steps to getting an app up and running with Slack Apps!
What's coming?
1. Remix the code on Glitch. Use the Glitch URL to send requests
to the Slack API.
2. Configure events, interactions, and permissions for the app.
3. Fix some bugs in the code.
4. Test it out!
What We Need To Do
11. Table of Contents
1. Introduction to Apps for Slack
2. Configure and Try the App
3. Review and Update the Code
4. Review & Quiz
5. Next Steps
11
Build Apps for Slack+
12. Build Apps for Slack+
12
Head to the URL below to see the code on Glitch!
1. Click Remix your own
2. Sign In or Sign Up
3. Check out the code!
mlhlocal.host/slack-code
Get the Source Code
13. Build Apps for Slack+
13
● package.json - lists the node packages
necessary for the app to work.
● game.js - this file contains the logic of
the game.
● index.js - this file contains the express
server to run the game and calls to the
Slack APIs that run the game
● .env - this file will contain your private
Slack API credentials.
What’s In This Project?
Open the project in Glitch and let’s review!
14. Build Apps for Slack+
14
● index.html - This file provides a landing
page for the Glitch app. This has no impact
on the behavior of your app. We included
this so that when you click "Show Live,"
you don't get a confusing error message.
● public/style.css - this file styles
index.html.
● assets/ - holds the image you see when
you click Show Live
● README.md - A description of the app
What’s In This Project?
Open the project in Glitch and let’s review!
15. 15
These files control how the game is
played. We need to create an App using
the Slack API, configure it, and add it to
our workspace to be able to play this
game. Let's get started!
16. Build Apps for Slack+
16
Now that we have the code for our app and have joined a workspace,
navigate to the URL below in a new browser tab.
1. You might have to log in. The
workspace name is
mlh-localhost.slack.com
2. Enter your email address
and password.
http://mlhlocal.host/slack-api
Create A New Slack App
17. Build Apps for Slack+
17
You might be redirected to the Slack workspace, but you
need to be in the API console.
3. Navigate to
mlhlocal.host/slack-api again.
4. Click Your Apps.
5. Click Create an App on the next
screen.
Create A New Slack App
18. Build Apps for Slack+
18
We created our app and assigned it to a workspace. Now, let's install it to
that workspace and get started developing!
6. Click Create App. Now, let's configure it!
Create A New Slack App
19. 19
The game is played by interacting with
a bot. Let's create the bot user!
20. Build Apps for Slack+
20
1. Return to browser where you have the Slack API dashboard open.
2. Under Features, Select Bot Users.
3. Select Add a Bot User.
Players will interact with a Bot. Let's add the Bot to our app!
Add A Bot User
21. Build Apps for Slack+
21
4. You can keep the default settings. Click Add Bot User.
Add A Bot User
Players will interact with a Bot. Let's add the Bot to our app!
22. 22
Let's install the app to our
workspace so that we generate
the API credentials we need.
23. Build Apps for Slack+
23
1. Select the Install App panel.
2. Click Install App to Workspace.
Now let's add the App to your Workspace.
Install the App to Your Workspace
24. Build Apps for Slack+
24
3. Select Authorize. 4. Copy your Bot User Token.
Install the App to Your Workspace
Now let's add the App to your Workspace.
25. Build Apps for Slack+
25
5. In your Glitch project, open .env.
6. Paste the TOKEN you just copied on Line 8.
Install the App to Your Workspace
27. Build Apps for Slack+
27
We need to get credentials from the Slack API to verify our identity.
1. Navigate to the Basic Information
panel in your Slack App
dashboard.
2. Find your app’s Signing Secret.
Click Show. Copy the token.
3. We need to use this secret to
send our calls to the Slack API.
Return to your project on Glitch.
Verifying Your Identity to the Slack API
28. Build Apps for Slack+
28
4. In your Glitch project, open .env.
5. Paste the SECRET you just copied onto Line 9.
Verifying Your Identity to the Slack API
29. Build Apps for Slack+
29
Now that we saved our signing secret to our environment, let's use a
verification tool to send that information to the Slack API.
6. In Glitch, click Tools, then click Logs, then Console to open the console.
Verifying Your Identity to the Slack API
30. Build Apps for Slack+
30
7. Enter the following command (all on one line):
./node_modules/.bin/slack-verify
--secret=$SLACK_SIGNING_SECRET
--port=3000 --path=/events
You should see the output below:
We asked the slack-verify package to run the verification tool. This allows us
to prove our identity to the Slack API.
Verifying Your Identity to the Slack API
31. Build Apps for Slack+
31
8. Click Show Live.
Your app will open in a new tab.
9. Copy the URL of your project from this tab
and return to the Slack API dashboard.
Verifying Your Identity to the Slack API
32. Build Apps for Slack+
32
You started the the verification tool, so now you can connect your app to the
/events endpoint. We'll explain an endpoint at the end of this section.
10. Navigate to the Event Subscriptions section of your Slack App dashboard.
11. Enable Events. Enter the URL you just copied with /events on the end.
12. When Verified✅ appears, the Slack API has verified your identity and now
you can make calls to the Slack API!
Verifying Your Identity to the Slack API IV
33. Build Apps for Slack+
33
Now that the Slack API has verified your identity, let's stop the verification tool.
13. Return to the Glitch console where you started the verification tool.
14. Enter CTRL C to stop the verification tool.
Verifying Your Identity to the Slack API V
34. Build Apps for Slack+
34
Communicate using endpoints
● An endpoint is a URL that you use to connect to service on a web server.
● For the Slack API we’ll use two endpoints.
● We’ll use the /events endpoint to listen for events in our Slack workspace.
● We’ll use the /actions endpoint to send information back to our app and
interact with it.
https://adjective-noun.glitch.me/events
What’s an Endpoint?
35. 35
Now, we have to tell the app what
events to listen for so that the bot
knows what to do.
36. Build Apps for Slack+
36
What are we doing?
● To run our app, we’ll want to listen to events that happen within the Slack
workspace.
● We want our app to run when a member joins or leaves a group or when
they post a message.
There are many different events that happen in a Slack workspace
– people join and leave channels, people send messages. We need to
select the events that matter to our app.
Select Workspace Events for Our App
37. Build Apps for Slack+
37
Adding Events
1. Navigate to the Events Subscriptions
section of the Slack API dashboard.
2. Click Add Workspace Event.
3. Add the following events:
Member_joined_channel
Member_left_channel
Message.channels
Message.groups
4. Be 100% that you click Save Changes.
Select Workspace Events for Our App
38. Build Apps for Slack+
38
1. Navigate to the Interactive
Components tab in the Slack App
dashboard. Turn on Interactive
Components.
2. Just like you did for /events, enter
your app url with /actions at the
end.
3. Click Save Changes at the bottom.
Just like we configured events, we also need to configure the
interactivity of our app.
Configure Interactive Components
39. Build Apps for Slack+
39
The events that we selected require certain permissions.
Our app requires a few additional ones.
● There’s two permissions we need to add:
bot
chat:write:bot
● These additional permissions will allow
our app to:
○ send messages to users – this is how
our game will gather questions from
a user.
○ post results of the game to the
channel.
Add Scopes to Our App
40. Build Apps for Slack+
40
1. Navigate to the OAuth & Permissions
section of the Slack App dashboard.
2. Scroll down to Scopes.
3. Add the following Permission Scopes:
bot
chat:write:bot
4. Be 100% that you click Save Changes
before you navigate away from this
page.
5. Then, in the yellow bar at the top,
reinstall your app.
Add Scopes to Our App
42. 42
Great! We created our app, installed it
to our workspace, and saved our slack
API credentials to our code.
Let's try it out!
43. Build Apps for Slack+
43
Return to the workspace you joined earlier and see if your app is working!
mlhlocal.host/localhostslack
1. Open the workspace.
2. Join the #twotruths channel
3. Play!
Let’s Test It Out!
44. 44
Hmm, that didn't work quite right.
We built some bugs into the code. Let's
check them out now!
45. Table of Contents
1. Introduction to Apps for Slack
2. Configure and Try the App
3. Review and Update the Code
4. Review & Quiz
5. Next Steps
45
Build Apps for Slack+
46. Build Apps for Slack+
46
● The bot asked you if you wanted to play.
● If you said yes, the screen didn't pop up!
● Let's look into the code to figure out how this is supposed to happen, and fix it!
What Went Wrong?
47. Build Apps for Slack+
47
game.js contains the code
that handles the logic of the
game. The game should ask a
user if they want to play when
they join the channel. If yes,
the app creates a dialog box
that allows the user to input
their truths and lie. If no,
cancel the game.
Once the user has submitted,
display their truths and lie to
other users and allow them to
guess!
Let's dive into the code!
game.js
48. Build Apps for Slack+
48
● Line 12: Create a Game class.
● Lines 13-20: Create a .constructor() method that sets up some
information the game needs, such as the ID of the user playing and the
channel where they're playing the game.
Code Review
game.js
49. Build Apps for Slack+
49
● Line 22: Create the promptToPlay() function, which will give instructions
and ask the user if they want to play.
● Lines 23-27: Create the message to display to users that explains the game.
Code Review
game.js
50. Build Apps for Slack+
50
● Line 28: Create an array of messages and actions to be sent to the user.
● Lines 33-36: Create two action objects. The first one is a button that says
'Add Your Truths and Lies.' The second is a button that says 'No thanks.'
Clicking these buttons tells the apps if the users wishes to play or not.
Code Review
game.js
51. Build Apps for Slack+
51
● Line 38: Create the conversation between the user and the bot.
Code Review
game.js
52. Build Apps for Slack+
52
● Line 39: Send the greeting (text) to the user in their private channel. Also
send attachments, which includes a message asking if they want to play
and two buttons letting them respond.
Line 39 causes this to happen:
Code Review
game.js
53. 53
This is where it went wrong! Pay close
attention to the next few slides.
54. Build Apps for Slack+
54
● Line 43: If the user decides to play, take the following actions:
● Lines 49-53: Create an array of three element objects. This is how the
Enter Your Two Truths and a Lie pop up is created.
Code Review
game.js
55. Build Apps for Slack+
55
● Line 55: Open a dialog (the pop-up where the user will enter her truths
and lies)
● Lines 56-59: Reply 'Awesome' once the user enters her truths and lies.
Code Review
game.js
56. Build Apps for Slack+
56
The previous code SHOULD
cause this to happen:
So, what went wrong?
Code Review
57. Build Apps for Slack+
57
What's missing?
● In order for the dialog box (pop-up) to open, it waits for a trigger_id, which
is sent to the function when certain events or interactions occur between
users and your app (like when a user clicks a button). In this case, the
trigger_id should be coming from the payload. Let's fix this.
Code Review
game.js
58. Build Apps for Slack+
58
Correct Code
Make sure your code looks like the code below, then let's move on!
Code Review
game.js
60. Build Apps for Slack+
60
● Line 63: If the user doesn't want to play, take the following actions:
● Lines 65-68: Create a variable that says 'Ok, maybe next time' and display
it to the user.
Code Review
game.js
61. Build Apps for Slack+
61
● Line 71: Now that the player has responded, let's randomize the choices
for the users.
● Lines 77-85: Make sure the user has filled in both truths and a lie.
Code Review
game.js
62. Build Apps for Slack+
62
● Line 71: Now that the player has responded, let's randomize the choices
for the users.
● Lines 77-85: Make sure the user has filled in both truths and a lie.
Code Review
63. Build Apps for Slack+
63
● Line 86: Create a random number between 0 and 2.
● Line 87: Add the responses to a choices array in random order.
● Line 88: Save the lie to the lie variable from the constructor function.
Code Review
game.js
64. 64
Okay, let's test the app!
You'll have to leave a channel, re-enter,
and play the game again to find the
next bug!
65. Build Apps for Slack+
65
● We fixed the trigger_id bug, and now you were able to play the game.
● But, when you submitted your guess, it revealed your guess to the whole
channel, rather than revealing it privately to you!
● What we need is an ephemeral.
ephemeral: A message that is displayed privately to
the user, rather than the whole channel
Key Term
What Went Wrong?
66. Build Apps for Slack+
66
Much like the promptToPlay() function, broadcastChoices() sends a
message to the channel where the game is being played and shows the users
Truths and Lies as buttons.
Code Review
game.js
67. Build Apps for Slack+
67
Much like the promptToPlay() function, broadcastChoices() sends a
message to the channel where the game is being played and shows the users
Truths and Lies as buttons.
Code Review
68. Build Apps for Slack+
68
The respondToChoice() function is supposed to secretly tell the player if their
guess is correct. Which part of the code posts that information?
Code Review
game.js
69. Build Apps for Slack+
69
Line 122. However, Line 122 says this.web.chat.postMessage. Let's change that
to this.web.chat.postEphemeral.
Code Review
game.js
70. Build Apps for Slack+
70
Correct Code
Let's test your app again!
Code Review
game.js
71. Build Apps for Slack+
71
After a certain amount of time, the game will reveal the answer to everyone in
the channel!
Code Review
game.js
72. 72
Once you've tested your app, read on to
learn how the rest of the app works,
and for more practice!
73. Build Apps for Slack+
73
index.js contains the code
that creates the game server,
requires the packages
necessary for the game to
work, and makes requests to
the Slack Events and Actions
API endpoints.
Let's dive into the code!
index.js
74. Build Apps for Slack+
74
● Lines 1-5: Each of these declarations allows us to use an external
JavaScript package.
● Line 6: This allows us to use the code written in game.js.
● Line 8: Set the localhost port to use for development.
Code Review
index.js
75. Build Apps for Slack+
75
● Lines 10-12: Remember earlier when we saved our Slack API token and
our Slack Signing Secret to the .env file? These lines retrieve that
information and pass it to different functions that allow our app to make
calls to the Slack API.
Code Review
index.js
76. Build Apps for Slack+
76
● Line 17: Log any errors to the console.
● Lines 18-20: Tells the slackEvents API to listen for the event type channel_join.
● Line 23: Create a new Game (the Two Truths and a Lie app).
● Line 24: Call the promptToPlay() function, which starts the game.
● Lines 26-28: Handle errors (we won't cover this code again).
Code Review
index.js
77. Build Apps for Slack+
77
● Line 31: Tells the slackInteractions API to listen for users response to the
promptToPlay function().
● Lines 35-36: Start the game if the player says yes.
● Lines 37-38: Delete the new instance of the game if the player says no.
Code Review
index.js
78. Build Apps for Slack+
78
● Line 46: Tells the slackInteractions API to listen for the player's choices.
● Lines 48-49: Return the player's choices at the end of the setChoices()
function.
Code Review
index.js
79. Build Apps for Slack+
79
● Line 55: Listens for players's guesses
● Lines 57-59: Send the player's guess to the respondToChoice() function.
Code Review
index.js
80. Build Apps for Slack+
80
● Line 67: Creates the Express app.
● Lines 68-69: Combine both event adapters into one express app.
● Lines 70-72: This tells the app to display index.html when someone
navigates to the URL of our code/app (but this has nothing to do with how
the game is played)
● Line 74: Create the server and start the game!
Code Review
index.js
82. Table of Contents
1. Introduction to Apps for Slack
2. Configure and Try the App
3. Review and Update the Code
4. Review & Quiz
5. Next Steps
82
Build Apps for Slack+
83. Build Apps for Slack+
83
Let’s recap quickly...
1
Slack is an awesome messaging app for
companies and organizations
2
Slack’s API gives you the ability to write apps
that talk to workspaces using their SDK
3
Slack Apps can use a variety of Slack events in
the UI.
84. Build Apps for Slack+
84
This app was designed to create a great experience for users of
your workspace. You should consider these best practices when
making your own Slack Apps!
Best Practices
Best Practices
1. Apps should give clear instructions for use.
2. Apps allow users to opt out when possible.
3. Add a help function to your app!
4. Plan interactions before you build the app and test them afterwards.
5. Iterate and accept feedback!
86. Table of Contents
1. Introduction to Apps for Slack
2. Configure and Try the App
3. Review and Update the Code
4. Review & Quiz
5. Next Steps
86
Build Apps for Slack+
87. Build Apps for Slack+
87
Where to go from here...
1 Visit api.slack.com to learn more.
2
Join community discussions at
api.slack.com/support
3
If you build an app you think others will use,
you can submit it to the Slack App directory
88. Build Apps for Slack+
88
Extra Practice Problem 1: Add this game to your
own Slack workspace!
Keep Learning: Practice Problems for Later
Extra Practice Problem 2: Edit the revealAnswer()
function to show a list of how people voted. You
could even add an award for participants who get
the most answers right!