452 lines
103 KiB
JSON
452 lines
103 KiB
JSON
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/global.all",
|
||
|
"updated": 1572579462680,
|
||
|
"items": [
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d7:5941944c",
|
||
|
"keywords": [
|
||
|
"slack",
|
||
|
"developer",
|
||
|
"apps",
|
||
|
"bots",
|
||
|
"security"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/3d509a15f41b",
|
||
|
"fingerprint": "f6ee9ae8",
|
||
|
"content": {
|
||
|
"content": "<h4>The happy path for building engaging Slack\u00a0apps</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*7wV-S0Hoz2l00zbeExJ8QA.gif\"><figcaption>Illustration and design by Casey Labatt\u00a0Simon.</figcaption></figure><p>Since launching five years ago, the Slack Platform has evolved\u200a\u2014\u200aas has our customer base. We\u2019ve grown to 12 million Daily Active Users with half of those users based outside the U.S. and working in non-technical roles. As Slack users become more diverse and global, our priority is to give you the tools to build for\u00a0them.</p><p>Today at Spec, our developer conference, we announced the Slack app toolkit\u200a\u2014\u200athe happy path for building engaging apps on Slack. Over time, we expect that all Slack apps will be built with these components.</p><p>The Slack app toolkit provides the fundamentals for building apps that are easy for any type of customer to discover, understand, and use\u200a\u2014\u200aso you can drive deeper adoption of what you\u00a0create.</p><p>The toolkit has four components, and we\u2019re making enhancements to\u00a0each:</p><ul><li><strong>Permissions</strong>, the way your app requests access to data on a workspace</li><li><strong>Block Kit</strong>, the UI framework for Slack\u00a0apps</li><li><strong>Surfaces</strong>, the places where people interact with Block Kit in\u00a0Slack</li><li><strong>Actions</strong>, simple shortcuts users can perform with your app\u200a\u2014\u200alike create a task or file a\u00a0ticket.</li></ul><p>Let\u2019s dive in and explore what\u2019s\u00a0new.</p><h3><strong>Permissions: Building enterprise-ready apps</strong></h3><p>To gain adoption in the enterprise, apps must first be approved by security-conscious admins. Previously, the bot token issued you a broad set of scopes, without the option to specify exactly what you\u00a0needed.</p><p>Granular permissions are now available for the bot token, enabling you to request only the information your app needs to function, and nothing more. Access less information, and make it simpler for admins to understand what your app can see and do in a workspace.</p><p>Granular permissions also offer a more reliable experience for you and your users. The updated bot token wraps in app functionality that was previously dispersed across both bot and user tokens. Apps using granular permissions will continue to work even when the original user who installed it leaves a workspace.</p><p>You can access <a href=\"https://api.slack.com/auth/basics\">granular permissions</a> in open beta today, and by doing so, unlock access to forward-looking platform features.</p><h3><strong>Block Kit: Slack\u2019s app UI framework</strong></h3><p>Earlier this year, we released <a href=\"https://medium.com/slack-developer-blog/block-party-d72c70a01911\">Block Kit</a>, the UI framework for Slack apps made up of stackable \u201cblocks,\u201d or bits of app UI. With Block Kit, you can build richer, more actionable experiences for your app\u00a0users.</p><p>Thanks to your feedback, we continue to enhance <a href=\"https://api.slack.com/block-kit\">Block Kit</a> and the <a href=\"https://api.slack.com/tools/block-kit-builder\">Builder</a>. New blocks, like input, multi-line input, multi-selects and radio buttons are available today; checkboxes are coming\u00a0soon.</p><h3><strong>Surfaces: Your app in more\u00a0places</strong></h3><p>Let\u2019s talk about where you can build with Block Kit in Slack. You can already construct app messages with Block Kit, but we want to enable you to create more engaging, persistent experiences\u200a\u2014\u200ato make apps simpler to discover, understand, and\u00a0use.</p><p>Today we announced that Block Kit is now available in two new <a href=\"https://api.slack.com/surfaces\">surfaces</a>, giving your app more real estate within\u00a0Slack.</p><h4><strong><em>App home</em></strong></h4><p>Now you can go beyond conversation-based interactions with the <a href=\"https://api.slack.com/surfaces/tabs\">home tab</a>\u200a\u20
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Introducing the Slack app toolkit",
|
||
|
"updated": 1571761861999,
|
||
|
"author": "Ellie Powers",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/introducing-the-slack-app-toolkit-3d509a15f41b?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1571761862000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d6:5941944c",
|
||
|
"keywords": [
|
||
|
"slack",
|
||
|
"shared-channels",
|
||
|
"bots",
|
||
|
"announcements",
|
||
|
"how-to"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/414ed5460168",
|
||
|
"fingerprint": "fcbcb109",
|
||
|
"content": {
|
||
|
"content": "<h4>Simplify coordination and unlock adoption with apps in shared\u00a0channels</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*eqPvgEZA5iH0AXOnXSbO7g.png\"></figure><p>Shared channels, now <a href=\"https://slackhq.com/slack-shared-channels?utm_medium=blog&utm_source=blog&utm_campaign=cd_blog_blog_all_en_all_cr-sharedchannel_platform_blog_ym-201909\">available for all Slack customers</a>, is a new feature that enables teams from different organizations to work together in Slack as productively as they work with their own companies. Shared channels work just like regular channels, only now they connect two organizations: Company A can communicate in the same Slack channel as its partners at Company B. New people coming into a project can readily access a project\u2019s archive, share updates and files, loop in the right people and quickly make decisions\u200a\u2014\u200aall from a single place in\u00a0Slack.</p><p>Just as in regular channels, Slack apps can help <a href=\"https://community.slack.com/apps/collection/shared-channels\">enable this work</a>. Besides opening up new use cases, shared channels can also unlock organic discovery of your app: When someone uses an app in a shared channel, others in the channel can see how it helps people work\u200a\u2014\u200aregardless of whether both workspaces have installed it.</p><p>Read on to learn how to get ready for shared channels.</p><h3><strong>How apps help move work forward in shared\u00a0channels</strong></h3><p>People in shared channels connect to the organizations they work with, like agencies, contractors, partners, vendors or customers. You can build an app specific to these use cases, helping teams\u00a0to:</p><p><strong>Handle contracts or payments: </strong>Teams in shared channels often work with external agencies and contractors. Keep things humming along with apps for negotiating, signing and finalizing contracts or\u00a0POs.</p><p><strong>Get notified on key updates</strong>,<strong> </strong>like incidents, company metrics or upcoming deadlines. Notification-based apps can make sure everyone has the information they need, when they need\u00a0it.</p><p>With <strong>Zoom</strong>, for instance, someone can quickly spin up a call and post the recording back into the channel for others to digest\u00a0later.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/800/1*6VCDPKtlkt20mp0foSWhrw.png\"></figure><p>Or, with <strong>Google Calendar for Teams</strong>, people in a shared channel can receive helpful summaries of the week\u2019s upcoming Google Calendar\u00a0events.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/800/1*pPMM59u163j7nJGlNvNEmw.png\"></figure><p><strong>Manage and approve projects: </strong>Project management apps can help two teams add tasks, assign owners or mark to-do\u2019s as complete\u200a\u2014\u200aso nothing falls through the\u00a0cracks.</p><p>For instance, let\u2019s say you built an app to help execute a brand campaign with your creative agency. When your agency\u2019s external designers complete a task, the app could automatically post the designer\u2019s comments inside Slack for your team to\u00a0review.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/912/1*Xl4hzbSat8Q4EJwNu0pRgQ.png\"></figure><p>In this way, your team can collaborate in real time with people <em>outside </em>the shared channel, too\u200a\u2014\u200aso you can communicate with your external agency\u2019s designers as naturally as you do with your own colleagues.</p><h3><strong>Adapting to a shared channels\u00a0world</strong></h3><p>Shared channels can introduce your app to new faces and related edge cases. To get ready, you\u2019ll first want to adopt the <a href=\"https://api.slack.com/docs/conversations-api\">Conversations API</a>. Aside from helping your app perform well in shared channels, these Web API methods include performance improvements to help your app scale in <em>any</em>\u00a0channel.</p><p>Second, subscribe to new channel_shared and chan
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Building apps for shared channels",
|
||
|
"updated": 1571761815276,
|
||
|
"author": "Slack API",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/building-apps-for-shared-channels-414ed5460168?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1571761815000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d5:5941944c",
|
||
|
"keywords": [
|
||
|
"slack",
|
||
|
"slack-platform",
|
||
|
"chatbots"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/ee83de4d93a5",
|
||
|
"fingerprint": "8ade97bd",
|
||
|
"content": {
|
||
|
"content": "<figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*l1V04plPDDmESB96ZXi_FQ.jpeg\"></figure><p>It\u2019s been just over a year since the Slack Platform team <a href=\"https://medium.com/slack-developer-blog/a-growing-community-b29ed908565b\">toured Asia</a>, and we\u2019re overdue to visit again. From October 31st to November 14th, <a href=\"https://slack.dev/events/apac-2019?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">you can join us at ten different cities in\u00a0Asia</a>.</p><p>We\u2019re excited to meet all of the builders and developers changing the way people work and collaborate. We\u2019ll be stopping in ten different cities all over Asia and Australia this November to talk about all the exciting developments from <a href=\"https://slack.com/spec?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">Spec</a>. In addition to discussing the latest Slack platform functionality, there will be plenty of time to meet the Platform team, and share your ideas and feedback on the Slack\u00a0roadmap.</p><p>We\u2019ll also be joining with our friends running one of the many local <a href=\"https://slackcommunity.com?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">Slack Platform Community</a> Chapters in the\u00a0area.</p><p>We\u2019re excited to hear from you, in turn, about what you\u2019re building. You\u2019ll get plenty of time with our developer relations team to show us what you have in the works, ask questions, and share feedback on our platform\u00a0roadmap.</p><h4>A note on sustainability</h4><p>Whilst we love visiting the community of Slack developers throughout the world, and think that there\u2019s no substitute for occasional face to face meetings, we\u2019re also conscious of the environmental impact of international travel, especially when it involves\u00a0flying.</p><p>With this in mind, we\u2019re adopting a new policy when it comes to our regular developer tours. To start with, we\u2019ll be calculating the CO2 output of all our air travel and purchasing carbon offsets at 200% of that output. Wherever possible, we\u2019ll book accommodation that is based in LEED certified buildings, or is otherwise sustainably designed.</p><p>Finally, we know everyone loves swag, but it\u2019s usually made of hard or impossible to recycle materials and hangs around the bottom of your backpack until it breaks. So going forward, all our printed materials will be made of 100% recycled paper and we\u2019ll only give out items that we consider to have a long term value to the community, such as our <a href=\"https://slack.dev/guides/Build.pdf\">Build book</a> and our <a href=\"https://slack.dev/guides/AppUIGuidelines.pdf\">App UI Guidelines</a>. One exception we\u2019ll make is for stickers, as they\u2019re small and have a minimal environmental footprint.</p><h3>Registration details</h3><h4>Australia</h4><ul><li><a href=\"https://slackcommunity.com/events/details/slack-sydney-presents-slack-platform-community-sydney-kick-off/#/?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">Sydney, October\u00a031st</a></li><li><a href=\"https://slackcommunity.com/events/details/slack-melbourne-presents-tiny-spec-melbourne?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">Melbourne, November\u00a07th</a></li></ul><h4>India</h4><ul><li><a href=\"https://slackcommunity.com/events/details/slack-bangalore-presents-tiny-spec-bangalore?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">Bangalore, November\u00a07th</a></li><li><a href=\"https://slackcommunity.com/events/details/slack-delhincr-presents-tiny-spec-delhi?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">New Delhi, November\u00a09th</a></li><li><a href=\"https://slackcommunity.com/events/details/slack-pune-presents-tiny-spec-pune?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q411-devtour\">Pune, November\u00a012th</a></li></ul><h4>Singapore</h4><ul><li><a href=\"https://www.
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Join the Slack Platform team in cities around Asia this November",
|
||
|
"updated": 1572025869198,
|
||
|
"author": "Colm Doyle",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/join-the-slack-platform-team-in-cities-around-asia-this-november-ee83de4d93a5?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1570573696000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d4:5941944c",
|
||
|
"keywords": [
|
||
|
"growplatform",
|
||
|
"personal-growth",
|
||
|
"slack",
|
||
|
"how-to",
|
||
|
"developer-stories"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/30810619845",
|
||
|
"fingerprint": "ab590028",
|
||
|
"content": {
|
||
|
"content": "<h3>\ud83d\udd13Unlock better UX for your Slack App with App Home Opened\u00a0\ud83d\udee0</h3><h4>3 Ways to improve your user experience with the new and awesome Slack Event app_home_opened!</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*lqXUwCyK3vakSn12-R6fwg.png\"></figure><p><a href=\"https://api.slack.com/events/app_home_opened?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-q308-unlock-better-ux\">App_home_opened</a> is an essential Slack event for app developers that want to better understand how users interact with their app in order to improve their app\u2019s user experience.</p><p>By subscribing to this event, Slack will notify your app <em>whenever</em> a user opens a direct message with your app (You can think of this as equivalent to an impression on a web\u00a0page).</p><p>We first read about this event in Halp\u2019s post \u201c<a href=\"https://medium.com/slack-developer-blog/thoughtful-app-onboarding-3751306aaecf\">Thoughtful app onboarding</a>\u201d, which details how to subscribe to this event and focuses on using it to effectively onboard different types of users. For a reference, here\u2019s how we configured this <a href=\"https://api.slack.com/events/app_home_opened?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-q308-unlock-better-ux\">event</a> with Node.js and\u00a0<a href=\"https://botkit.ai\">botkit</a>.</p><pre>const Botkit = require('botkit');</pre><pre>const controller = Botkit.slackbot();</pre><pre>controller.on('app_home_opened', async (bot, message) => {</pre><pre> // Your code here</pre><pre>});</pre><p>In this article, we\u2019ll discuss further use cases for app_home_opened and give a description of how we implemented these features in our app,\u00a0Grow.</p><p><a href=\"https://getgrow.io/?utm_source=slack.com&utm_campaign=developer_blog\">Grow</a> is a Slack-first platform that facilitates personal growth through continuous and actionable feedback with your team. We use app_home_opened to:</p><ul><li><strong>Better understand how users interact with our app: </strong>Grow users select from our list of \u201cnudges\u201d to schedule reminders for themselves throughout the week. We use app_home_opened to understand how effective each nudge is, which is critical towards helping us design better\u00a0nudges.</li><li><strong>Pre-load common actions for user convenience: </strong>Through app_home_opened, we noticed that many users would open our app but then not do anything. Through further user testing, we found that some users don\u2019t remember or even like using commands (even \u201chi\u201d or \u201chelp\u201d). We addressed this by pre-loading common actions when users open the app, which has led to a significant increase in our baseline engagement.</li><li><strong>Effectively roll out new features and tips to users: </strong>It can difficult to spread the news about new features that might benefit many of your users. Many of our users follow us on social media or subscribe to our product update newsletter, but for those that do not, we\u2019ve found the best way to notify them is by rolling out feature updates during app_home_opened. Sending users <em>unprompted</em> feature updates is often viewed as being \u201cspammy\u201d while prompting after app_home_opened seems more respectful and convenient.</li></ul><h3>Better Understand How Users Interact With Your\u00a0App</h3><p>One interesting metric you can now approximate is how often a user opens your app and then leaves without doing anything (similar to a website\u2019s bounce rate). We roughly approximated this by measuring whether or not a user performed any action in our app within an hour of their app_home_opened event.</p><p>You can also use this event as an approximate \u201cread\u201d receipt. If your app sends scheduled messages (Note: always get user/team consent before scheduling messages!), it is reasonable to assume that receiving an app_home_opened event, after you sent the message, means that the user has read the scheduled message.</p><p>
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Unlock better UX for your Slack Bot with App Home Opened",
|
||
|
"updated": 1568217885179,
|
||
|
"author": "Richard Q Hill",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/unlock-better-ux-for-your-slack-bot-with-app-home-opened-30810619845?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1568217885000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d3:5941944c",
|
||
|
"keywords": [
|
||
|
"salesforce",
|
||
|
"specs",
|
||
|
"xkcd",
|
||
|
"slack",
|
||
|
"announcements"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/bac42b6a8a0c",
|
||
|
"fingerprint": "903e2c6d",
|
||
|
"content": {
|
||
|
"content": "<h4>Slack\u2019s two-day developer conference will feature product announcements, workshopping, app building and\u00a0more</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*UeoxsFMyZcManQ9NOifC6g.jpeg\"></figure><p>Last year, we introduced <a href=\"https://slackhq.com/whats-next-for-spec-our-conference-for-builders\">Spec</a>, our first developer conference (<a href=\"https://medium.com/slack-developer-blog/catching-up-on-all-things-spec-851f8c5136fb\">check out the recap</a>). Now, for Spec 2019, we\u2019re going even bigger, with more speakers, more sessions, more opportunities to connect\u200a\u2014\u200aand more conference. Spec will be hosted in San Francisco on Oct. 22 and\u00a023.</p><p>We just rolled out our <a href=\"https://slack.com/spec/agenda\">full agenda for Spec 2019</a> with two separate tracks and keynotes from Randall Munroe, the creator of the popular webcomic<strong> </strong><a href=\"https://xkcd.com/\">xkcd</a>, and Sarah Franklin, EVP and GM, Developer Relations and Trailhead at Salesforce. Here\u2019s a preview of the action-packed two days we\u2019ve got\u00a0planned.</p><h4>Day 1: New releases, secure apps and community</h4><p>Kick things off by learning about the latest Slack platform functionality. VP and GM of Platform at Slack, Brian Elliott, and Slack\u2019s director of Product, Ellie Powers, will be sharing the newest Slack Platform features and product announcements that allow developers to build better, more deeply integrated apps.</p><p>Last year at Spec, we introduced Actions and <a href=\"https://api.slack.com/block-kit\">Block Kit</a>, our UI framework that enables richer app experiences in Slack. But how do you know when it\u2019s time for a redesign? This year, we present <strong>Future-proofing your app with Block Kit,</strong> where you\u2019ll learn how to identify when it\u2019s time to redesign your app, and how to approach a migration. Our panel of experts will include Katie Chen, staff Product designer at Slack; Pete Michel, principal architect at Guru; and Netali Jakubovitz, product manager at\u00a0Doodle.</p><p>In <strong>Slack on security: Demystifying how to build a trustworthy app</strong>, members of Slack\u2019s own security team will walk you through best practices for building secure apps, including actionable steps to unlock enterprise adoption.</p><p>Wrap up the day with a soon-to-be-announced workshop (trust us, it\u2019ll be worth the wait!) and then roll down your sleeves for Franklin\u2019s closing keynote. Slack\u2019s director of Developer Relations, Bear Douglas, will host a conversation with Franklin on the expanding role of developers and the lessons learned building a sustainable, equitable community.</p><p>Day one will wrap up with a reception before it\u2019s time to turn in, get some rest and get ready for Day\u00a0Two.</p><h4>Day 2: Explore creativity and curiosity with\u00a0xkcd</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/500/1*GqI6NG7H_MRdCvazs_yzfA.png\"><figcaption>Randall Munroe, xkcd creator, is also the author of the newly released book \u201cHow To: Absurd Scientific Advice for Common Real-World Problems.\u201d <a href=\"http://xkcd.com\">xkcd</a> comic used with permission; license via Creative\u00a0Commons.</figcaption></figure><p>Ever wonder how Slack builds Slack? Join us for Day Two of Spec to hear from our co-founder and CTO Cal Henderson on how Slack engineers are thinking through\u200a\u2014\u200aand solving\u200a\u2014\u200athe big challenges affecting our shared customers. This morning keynote will be full of expert insights to help you achieve scale, accessibility and delight when building.</p><p>Version one of any product, however, is just that: the beginning. Creating a successful app begins with your first release, and continues with each iteration. In <strong>Continuous discovery and innovation in Slack, </strong>Aubrey Tatarowicz<strong>,</strong> a senior software engineer at <a href=\"https://troops.ai/\">Troops.ai</a>, will share how Troops use
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Spec is back with more conference than ever before",
|
||
|
"updated": 1567626878333,
|
||
|
"author": "Slack API",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/spec-is-back-with-more-conference-than-ever-before-bac42b6a8a0c?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1567528532000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d2:5941944c",
|
||
|
"keywords": [
|
||
|
"build-app",
|
||
|
"ideas",
|
||
|
"automation",
|
||
|
"slack-apps",
|
||
|
"slack"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/3a0aeda2bee6",
|
||
|
"fingerprint": "f0727414",
|
||
|
"content": {
|
||
|
"content": "<h4>Make your life easier with Slack tools and\u00a0APIs</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*E2A0XUAnQalObAHhe6LtXA.png\"></figure><p>Let\u2019s face it. Doing the same task over and over again is a boring waste of time, but we can\u2019t just avoid this work. That\u2019s why in our team, we started thinking about ways of making things faster and lessening any human interaction for effortless results. Saving time is key for everyone in the\u00a0end.</p><p>Your recurring and boring tasks may vary, but at work, it\u2019s likely that you check your support email inbox, and get asked to generate reports. We deal with this too, and agree that doing daily repetition is challenging and\u00a0tedious.</p><p>At CleverPPC, we track and manage our customers\u2019 Google Ads campaigns several times a day manually. If you\u2019ve used Google Ads before, you might have felt overwhelmed by the huge amount of options and graphs that Google offers. Usually, we only need to check on a single metric, and the page load and other fields slow down our quick search. Quite frustrating, right?</p><p>To fix this challenge, we decided to use Google Ads API to monitor these metrics where we work the most: Slack. Instead of loading each page, we could then track metrics and graphs pertaining to the campaign\u2019s performance in a Slack channel\u00a0easily.</p><p>Our <a href=\"https://clevergoogleads.com/slack-app?ref=medium\">Slack app</a> saved us time by tracking Google Ads accounts with a straightforward approach. It featured the ability to look at the metrics we wanted to, manage our accounts, and set reminders through a seamless structure. Integrating the Clever Google Ads app added great value to our company that others could use to their advantage as well. So, how does it work? Let\u2019s get into more\u00a0details.</p><h3>Clever Google\u00a0Ads</h3><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*1SG_7cQI6kGB0A7lI1G52Q.gif\"><figcaption>Clever Google Ads for\u00a0Slack</figcaption></figure><p>Using this app is pretty\u00a0simple:</p><ul><li>Connect your Google\u00a0account</li><li>Select the Google Ads account that you want to\u00a0track</li><li>Ask for\u00a0metrics</li><li>Receive your campaign performance instantly</li></ul><p>And what do we need to make this app\u00a0work?</p><ul><li><strong>Google OAuth2.0</strong>, for the\u00a0login</li><li><strong>Google Ads API</strong> (beta) or Google Adwords API (stable), for retrieving metrics or making\u00a0changes</li><li>An API developed by us to generate graphs using Chart.js, since a picture is worth a thousand\u00a0words</li><li><a href=\"https://slack.dev/node-slack-sdk/?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-q308-creating-slack-apps-cleverppc\"><strong>Node Slack SDK</strong></a>, to receive commands and respond accordingly</li></ul><p>The Slack API provides a huge amount of functions, and that\u2019s good, but in our case, we just needed a couple of commands. We wanted to respond to a user interaction and automatically send scheduled messages. For us, the most important API calls\u00a0are:</p><ul><li><strong>chat.postMessage</strong>, used right after a user writes something in the bot home or wants to share metrics with other channels. Also, it is needed to send automatic messages.</li><li><strong>chat.postEphemeral</strong>, quite important to ensure that an action will only be performed from a specific user. You may use it for login messages or account selections.</li><li><strong>dialog.open. </strong>This one is pretty interesting. It helps a lot with the user experience, since it will open a pop-up with a form that will disappear after the submission. This is your best option if you want some feedback from your users, as it will keep their conversations clean.</li></ul><p>Adding anything else would add great value, but on the other hand, the app\u2019s main menu would be overloaded with many different options and buttons, and we\u2019d like to avoid that. This app was not desi
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Creating Slack Apps for tedious, automatable processes",
|
||
|
"updated": 1566980024696,
|
||
|
"author": "Guillermo Mora Cordero",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/creating-slack-apps-for-tedious-automatable-processes-3a0aeda2bee6?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1566937454000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d1:5941944c",
|
||
|
"keywords": [
|
||
|
"block-kit",
|
||
|
"software",
|
||
|
"developer-stories",
|
||
|
"chatbots",
|
||
|
"slack"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/c78146d63197",
|
||
|
"fingerprint": "abf5f1",
|
||
|
"content": {
|
||
|
"content": "<h4>Creating NAVITIME for\u00a0Slack</h4><p><em>This article was originally posted on </em><a href=\"https://qiita.com/navitime_tech/items/85de33072486e7d323a5\"><em>our Qiita blog in Japanese</em></a><em>.</em></p><p>While developing our new Slack app, we fully utilized Block Kit to realize the rich user interface of NAVITIME for Slack. In this article, we\u2019ll discuss the lessons we learned during development:</p><ul><li>Overview of Block\u00a0Kit</li><li>How we used Block Kit for NAVITIME for\u00a0Slack</li><li>Obstacles we encountered, and a few\u00a0tips</li></ul><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*9UrOE4_ul1lBUdsumX4KjQ.png\"></figure><p>NAVITIME launched a new Slack app on July 2, 2019. Refer to <a href=\"https://static.cld.navitime.jp/totalnaviapp-storage/storage/smartphone/slack_app/slack_landing.html\">the landing page (in Japanese)</a> to learn more. NAVITIME is a popular travel and destination routing app in Japan for both locals and those visiting from\u00a0abroad.</p><h4>Disclaimer</h4><p>This article doesn\u2019t discuss the basics of creating Slack apps or how to interact with the payloads sent from Slack Platform. To learn how to get started, we recommend reading <a href=\"https://api.slack.com/\">Slack\u2019s API documents</a>.</p><h3>Block Kit\u00a0Overview</h3><p>Block Kit is a new UI framework for building rich messages on Slack. Block Kit is not a method library but instead is an interface specification for communications with Slack Platform. You don\u2019t need to install anything to start using it. Simply send Block Kit compatible JSON data to Slack\u00a0servers.</p><h4>Things you can do with Block\u00a0Kit</h4><p>Using Block Kit, you can easily build beautiful native app-like UI and organize messages with great informational density.</p><p>To learn how to build apps with Block Kit, <a href=\"https://github.com/slackapi/app-interaction-patterns\">this article</a> is a great resource for examples of using Block Kit properly.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*sNZle7K8TK6_lUXInth6TQ.png\"><figcaption>Creating a route in Slack with the Block Kit-enabled NAVITIME\u00a0app</figcaption></figure><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*4JRmIxXGbHNT0XecwJfp0g.png\"><figcaption>Viewing the route that NAVITIME\u00a0created</figcaption></figure><h4>Check your UI with Block Kit\u00a0Builder</h4><p>It can be a bit time-consuming to verify the appearance of messages by cutting and pasting JSON data. While prototyping, we recommend using <a href=\"https://api.slack.com/tools/block-kit-builder\">Block Kit Builder</a>, a useful tool offered by Slack. Block Kit Builder displays a live preview in the left pane when you edit the JSON data in the right pane as shown below. Additionally, once you\u2019ve built your message, you can instantly share the message with other people in your Slack workspaces.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*Goh1BUoWWmfXOhC7vReKmA.png\"><figcaption>The Block Kit Builder\u200a\u2014\u200aa great way to preview your\u00a0blocks</figcaption></figure><h4>Structure of Block Kit\u00a0Messages</h4><p>Block Kit messages consist of data objects called \u201cblocks.\u201d Blocks may have many elements such as buttons, a select menu, or images. There are several types of blocks and allowed element types may vary. In order to build your messages with Block Kit, you stack these elements vertically.</p><p>If you\u2019re curious about the types of block elements, refer to the corresponding official documents\u200a\u2014\u200a<a href=\"https://api.slack.com/reference/messaging/blocks\">Reference: Message layout blocks</a> and <a href=\"https://api.slack.com/reference/messaging/block-elements\">Reference: Block elements</a>.</p><h4>Simple Example of JSON Structure</h4><p>Code Example Here is a very basic Block Kit JSON\u00a0example:</p><pre>[<br> {<br> "type": "actions",<br> "elements": [<
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Building a user-friendly Slack app with Block Kit",
|
||
|
"updated": 1565111138566,
|
||
|
"author": "NAVITIME JAPAN Co., Ltd",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/building-a-user-friendly-slack-app-with-block-kit-navitime-c78146d63197?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1565110920000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:d0:5941944c",
|
||
|
"keywords": [
|
||
|
"productivity",
|
||
|
"apps",
|
||
|
"slack-tips-and-tricks",
|
||
|
"cross-functional-teams",
|
||
|
"slack"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/f58abe11ebb0",
|
||
|
"fingerprint": "cf3afde0",
|
||
|
"content": {
|
||
|
"content": "<h4>Designing Dash for Slack with a customizable UI framework</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*b-ntV-zcjejxrJAT2KGh5Q.jpeg\"></figure><blockquote>Jeremy (managing partner at Postlight) and team recently launched <a href=\"https://dashforslack.com\">Dash</a>, a new Slack app. Dash gives teams an easy way to start a new Slack channel for a specific topic or conversation, set a deadline, and then archive the channel and share the outcome of the discussion when time\u2019s up. <a href=\"https://dashforslack.com/slack/direct-install\">Add Dash to your Slack workspace now</a>\u200a\u2014\u200aand read on to learn how we used Block Kit to style our app messages in\u00a0Slack.</blockquote><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*uuRuBKZGuaBVc2XP_IlvYQ.png\"></figure><h3>Using Block\u00a0Kit</h3><p>Just as we started working on Dash, we found out about <a href=\"https://api.slack.com/block-kit\">Block Kit</a>, which was in beta at the time. We were really interested to see what Block Kit could do, so we developed two versions of the app: The Block Kit version, and the non-Block Kit version. We launched with Block\u00a0Kit.</p><h4>Datepicker</h4><p>Dash exists because Slack added a datepicker when they introduced Block Kit. The datepicker allows users in Slack to do something that wasn\u2019t possible before: take actions that impact the future. In Dash\u2019s case, the datepicker is used to pick the end date for a conversation.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*kDoGkZWWLb0rTUGEuVeLEw.png\"><figcaption>The datepicker in action. We use Block Kit\u2019s layout elements to carefully place an error message when the user selects a date in the\u00a0past.</figcaption></figure><h4>Dashboard</h4><p>Dash makes unique use of Slack by providing a live<em> Dash</em>board inside your conversation with Dash bot. The Dashboard is constructed with Blocks and allows the user to close or edit the end time of any of their Dash channels from one\u00a0spot.</p><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*Px4hNvSf6qyROD_shb8U6Q.png\"></figure><h3>Lessons learned</h3><p>Building Dash with Block Kit while Block Kit was still in active development was fun and educational. Here are some of the things we learned as we\u00a0went.</p><h4>Pick your integration points carefully</h4><p>Slack is a robust platform with many APIs a third party app can leverage. <a href=\"https://postlight.com/trackchanges/building-dash\">We built the first version of Dash using threads</a>, only to find out that many of our testers needed a tutorial on threads before they could make effective use of Dash. Experiment with as many features of Slack\u2019s API as possible to find the right fit for your\u00a0app.</p><h4>Bots can\u2019t do everything</h4><p>Slack allows you to use their API on behalf of an authenticated user or your bot. It\u2019s incredibly important to understand what features of Slack you can use as a bot and as a user, especially when dealing with private channels. We made it all the way to staging with some features that didn\u2019t function properly because the bot user wasn\u2019t able to take certain API\u00a0actions.</p><h4>Build for\u00a0speed</h4><p>You\u2019ve got three seconds to respond when Slack calls your code. Here are some important things to consider:</p><ul><li>When using Function-as-a-Service providers, solve <a href=\"https://mikhail.io/2018/08/serverless-cold-start-war/\">cold starts</a>. Serverless has a <a href=\"https://github.com/FidelLimited/serverless-plugin-warmup\">wonderful plugin for fixing cold\u00a0starts</a>.</li><li>Keep API access to a minimum, even\u00a0Slack\u2019s.</li><li>Use asynchronous, event-driven, responses and show loading states. We use <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html\">AWS Lambda\u2019s Invoke</a> feature to start background functions for complex logic, like updating the Dashboard.</li></ul><h4>Slack teams have differ
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Helpful tips for building with Block Kit",
|
||
|
"updated": 1561495412492,
|
||
|
"author": "Jeremy Mack",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/helpful-tips-for-building-with-block-kit-f58abe11ebb0?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1561495340000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:cf:5941944c",
|
||
|
"keywords": [
|
||
|
"developer",
|
||
|
"slack",
|
||
|
"onboarding",
|
||
|
"apps",
|
||
|
"user-experience"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/3751306aaecf",
|
||
|
"fingerprint": "37cd3f25",
|
||
|
"content": {
|
||
|
"content": "<h4>Clear and timely communication of your Slack app\u2019s value using the app_home_opened event</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*I2whozv_-kJwwXiOpxh8ow.jpeg\"></figure><p>So you\u2019ve made an awesome app! Now it\u2019s time to educate your users about\u00a0it.</p><blockquote>Tip: If you\u2019re not familiar with Slack\u2019s Events API, I highly recommend reading <a href=\"https://api.slack.com/events-api\">this</a> documentation.</blockquote><h4>Knowing the exact moment to send a\u00a0message</h4><p>Recently released, app_home_opened is an event that Slack app developers can subscribe to and triggers every time a user opens a DM with your\u00a0app.</p><p>The initial seconds of interaction with your app determine whether people view it as useful, or not. By subscribing to this new event, you now have more control over timely communication and that crucial first impression.</p><p>This can be applied in many ways. To name a\u00a0few:</p><ul><li><strong>Onboarding:</strong> Send a friendly welcome message that clearly articulates your app\u2019s value, primary ways to use it, and actionable next\u00a0steps.</li><li><strong>Tips</strong>: You can randomize a set of tips, and send them to a user every few times they open the DM. We recommend every five times, but it\u2019s totally up to you! (Make sure your app remains helpful, and not overly \u201ctalkative\u201d or\u00a0spammy.)</li><li><strong>Welcome back: </strong>If a user hasn\u2019t interacted with your app in a while, send them a message that welcomes them back and reinforces your app\u2019s value, primary ways to use it, and actionable next\u00a0steps.</li><li><strong>Product updates: </strong>Keep your users informed of the latest app improvements, new functionality or features released.</li></ul><h4>How to get\u00a0started</h4><ol><li>Find your App Settings: Go to <a href=\"https://api.slack.com\">https://api.slack.com</a> and then click on <em>Your Apps</em> and select your\u00a0app.</li><li>Click on <em>Event Subscriptions</em></li><li>Click <em>Add Workspace Event</em></li><li>Select app_home_opened and you\u2019re good to\u00a0go!</li></ol><blockquote>Tip: You will need to resubmit your app if it\u2019s listed on the <a href=\"http://slack.com/apps.\">Slack App Directory</a>. That usually doesn\u2019t take too\u00a0long.</blockquote><h4>How to\u00a0code</h4><p>If you\u2019re using node, there\u2019s a really in depth article on it <a href=\"https://slack.dev/node-slack-sdk/events-api\">here</a>. Here\u2019s a modified code snippet from the article that shows how to subscribe to the event and what the payload would look\u00a0like:</p><pre><strong>// Rough Adaptation from the link above<br>const</strong> { createEventAdapter } <strong>=</strong> require('@slack/events-api');<br><strong>const</strong> slackSigningSecret <strong>=</strong> process.env.SLACK_SIGNING_SECRET;<br><strong>const</strong> port <strong>=</strong> process.env.PORT <strong>||</strong> 3000;<br><br><em>// Initialize the adapter to trigger listeners with the full body</em><br><strong>const</strong> slackEvents <strong>=</strong> createEventAdapter(slackSigningSecret, {<br> includeBody: <strong>true</strong>,<br>});<br><br><br>slackEvents.on('app_home_opened', (event, body) <strong>=></strong> {<br> console.log(event);<br>})<br><br>(<strong>async</strong> () <strong>=></strong> {<br> <strong>const</strong> server <strong>=</strong> <strong>await</strong> slackEvents.start(port);<br> console.log(`Listening for events on ${server.address().port}`);<br>})();</pre><pre>// Alternatively, if you're using express you might do this:<br>app.post("/slack/events", slackEvents.expressMiddleware());</pre><p>And the event payload looks (roughly) like\u00a0this:</p><pre>{ channel: "C1234", user: "U1234", type: "app_home_opened" }</pre><p>The body object has more useful metadata:</p><pre>{<br> api_app_id: "A123",<br> authed_users: ["U123", "U124"],<br> event: {
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Thoughtful app onboarding",
|
||
|
"updated": 1558022461028,
|
||
|
"author": "Komran Rashidov",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/thoughtful-app-onboarding-3751306aaecf?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1558022461000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"id": "qEpwuGc198Q0iZ4TfiGSMxC7/u94Q/Cr0YQ2GQ5OqnE=_16e250a4e18:ce:5941944c",
|
||
|
"keywords": [
|
||
|
"slack",
|
||
|
"announcements"
|
||
|
],
|
||
|
"originId": "https://medium.com/p/49090a09513a",
|
||
|
"fingerprint": "fed6e8a3",
|
||
|
"content": {
|
||
|
"content": "<h4>We\u2019re hitting the road to meet the developers and builders creating a new way to\u00a0work</h4><figure><img alt=\"\" src=\"https://cdn-images-1.medium.com/max/1024/1*TkaJKVZUfDPF7uTGVsEwiw.png\"><figcaption><em>Illustration by </em><a href=\"https://holinaty.com/\"><em>Josh\u00a0Holinaty</em></a></figcaption></figure><p>Mark your calendar! The Slack Platform team will make their way across Europe in early June to meet Slack developers and builders in <a href=\"https://slackcommunity.com/events/details/slack-berlin-presents-build-slack-apps-that-make-your-daily-life-easier/#/?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q206-dev-tour-emea\">Berlin</a>, <a href=\"http://slackdevsparis2019.splashthat.com/blog\">Paris</a> and <a href=\"http://slackdevslondon2019.splashthat.com/blog\">London</a>. Read on for a preview of what to expect in each\u00a0city.</p><p>Join the <a href=\"https://medium.com/@WorkstreamsApp/slack-platform-community-berlin-f8776c1bfff6\">first-ever Slack Platform Community: Berlin event</a>\u200a\u2014\u200ait\u2019s a great opportunity to connect with other devs and share ideas, swap knowledge, and ask questions. The Slack DevRel team will also catch you up on all the latest Slack Platform news. Come meet the team and provide direct feedback on the direction and focus of SPC:\u00a0Berlin.</p><p>In Paris, you\u2019ll get an inside look at the story of Brainsto, an app that facilitates actionable team brainstorms directly in Slack. <a href=\"https://www.linkedin.com/in/sina-taghva-4b430486/\">Sina Tagvha</a> from Braineet, the company behind Brainsto, will go deep on how a small side project became a fully-featured app available for anyone to use. Sina will cover how using Block Kit expanded interactivity and what\u2019s next for the Brainsto app. You\u2019ll also hear from the Slack team on updates to the Platform since the last visit in November, and you\u2019ll get an in-depth look at building with Block\u00a0Kit.</p><p>In London, the Slack Platform team will be joined by speakers from Deliveroo and HSBC. <a href=\"https://www.linkedin.com/in/hugo-darwood-828123bb/\">Hugo Darwood</a> (Deliveroo) and <a href=\"https://www.linkedin.com/in/samwhite0/\">Sam White</a> (HSBC) will walk through the tools they build for their teams, and how custom Slack apps help them to be more productive. Members of the Slack Platform team will share tips and tricks for building with Block Kit, and review the latest and greatest in the Platform.</p><p>Spots are limited; secure yours on the event pages\u00a0below:</p><p><strong>Event Dates</strong></p><p><strong>4 June<br></strong><a href=\"https://slackcommunity.com/events/details/slack-berlin-presents-build-slack-apps-that-make-your-daily-life-easier/#/?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q206-dev-tour-emea\">Slack Platform Community: Berlin @ Factory Berlin\u200a\u2014\u200aMitte</a></p><p><strong>4 June<br></strong><a href=\"http://slackdevsparis2019.splashthat.com/blog\">Slack Developers: Paris @ La\u00a0Fabrique</a></p><p><strong>11 June<br></strong><a href=\"http://slackdevslondon2019.splashthat.com/blog\">Slack Developers: London @ The Steel\u00a0Yard</a></p><p><strong>Bonus points: If you\u2019re headed to JSConf EU or We Are Developers in Berlin, stop by our booth and say hello. Chat in-person with the Platform team, check out a demo, or pick up some swag. At We Are Developers, we\u2019ll host a Slack app development workshop, too!</strong></p><p><em>Want to stay updated? </em><a href=\"https://twitter.com/SlackAPI\"><em>Follow along on Twitter</em></a><em> or join the community at </em><a href=\"https://slackcommunity.com/?utm_medium=referral&utm_source=apiblog&utm_campaign=fy20-Q206-dev-tour-emea\"><em>slackcommunity.com</em></a><em>.</em></p><img width=\"1\" src=\"https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=49090a09513a\" height=\"1\"><hr><p><a href=\"https://medium.com/slack-developer-blog/join-slack-in-berlin-paris-and-london-this-june-49090a09513a\">Join
|
||
|
"direction": "ltr"
|
||
|
},
|
||
|
"title": "Join Slack in Berlin, Paris, and London this June",
|
||
|
"updated": 1558458448152,
|
||
|
"author": "Slack API",
|
||
|
"alternate": [
|
||
|
{
|
||
|
"href": "https://medium.com/slack-developer-blog/join-slack-in-berlin-paris-and-london-this-june-49090a09513a?source=rss----d76c0605b922---4",
|
||
|
"type": "text/html"
|
||
|
}
|
||
|
],
|
||
|
"crawled": 1572579462680,
|
||
|
"published": 1557887552000,
|
||
|
"origin": {
|
||
|
"streamId": "feed/https://medium.com/feed/slack-developer-blog",
|
||
|
"title": "Slack Platform Blog - Medium",
|
||
|
"htmlUrl": "https://medium.com/slack-developer-blog?source=rss----d76c0605b922---4"
|
||
|
},
|
||
|
"visual": {
|
||
|
"url": "http://cdn1.sbnation.com/assets/3360827/SE-sizzle.png",
|
||
|
"width": 1100,
|
||
|
"height": 619,
|
||
|
"contentType": "image/png"
|
||
|
},
|
||
|
"unread": true,
|
||
|
"categories": [
|
||
|
{
|
||
|
"id": "user/f2f031bd-f3e3-4893-a447-467a291c6d1e/category/b35dbac9-ed46-4c6f-ab82-6798caa6b43d",
|
||
|
"label": "Another for NetNewsWire"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
}
|