在这里,可能是因为想为Slack工作空间添加一些自定义功能。无论是因为喜欢Slack,还是因为工作需要而使用它,编写一个Slack应用都可以是既有趣又可能带来收益的事情。一些开发者甚至围绕使Slack更有用的应用建立了整个业务。
Slack应用是一个可以读取或写入Slack工作空间中频道的应用。应用还可以响应提供关于Slack工作空间或频道中发生的事情的信息的事件,比如用户加入或离开频道,或者工作空间的域名变更。
Slack提供了三种不同的API,可能会用到它们来构建应用。
Slack的Web API是一个RPC风格的HTTP API,它允许查询Slack工作空间的信息,并向Slack工作空间推送信息或消息。对于简单的应用,Web API可能就足够了。由于只需要能够发送HTTP请求就可以使用它,几乎所有的编程语言都可以使用Web API。如果绝对、肯定需要用COBOL编写Slack应用,那么Web API可能是最好的(也是唯一的)选择。
如果是一个喜欢最新技术的Haskell开发者,那么Slack的实时消息API™就是为准备的!如果是一个专业的应用开发者,想要尽可能快地接收和响应Slack频道中的事件,这也是一个很好的选择。
实时消息API依赖于WebSockets。因此,虽然它几乎可以在任何语言中使用,但如果语言没有WebSocket支持,那么就无法使用它。不过,如果想要为Algol-60编写自己的WebSocket库以便与Slack交互,请随意这么做,并在CodeProject上发表一篇文章!
对于大多数应用来说,实时消息API是一个不错的选择,但缺点是会收到通过API订阅的频道发布的所有消息和事件。如果应用在监听所有内容,但只关心非常特定的事件,这可能会导致不必要的服务器和带宽费用。如果对特定事件感兴趣,请继续阅读。
正如其名称所示,如果对Slack频道中发生的某些类型的事件感兴趣,那么Slack的事件API就是想要使用的。Slack提供了一个可以订阅的事件列表。
如果看起来感兴趣的所有事件都可以通过事件API访问,那么可以保持简单,避免使用基于WebSocket的复杂解决方案。如果事件API不能满足需求,那么需要准备好一杯浓咖啡和一种YOLO的态度,因为将要从实时消息的消防栓中喝水!
无论决定使用哪种Slack API,都需要遵循一些共同的步骤来启动应用。
首先,需要创建一个新的工作空间,作为可以测试应用的沙箱。可以通过访问https://slack.com/create并按照步骤创建一个新的工作空间来实现这一点。Slack会通过电子邮件向发送一个确认码,问几个问题,然后为创建工作空间。创建完成后,将自动登录到工作空间并被添加到一个频道中。
如果是管理员,也可以跳过这一步,直接使用雇主的Slack工作空间。根据雇主的慷慨程度,这样做可能会让得到晋升,也可能会失去工作。
现在已经创建了工作空间并登录了,已经准备好创建应用了。要做到这一点,只需要访问https://api.slack.com/apps/new。Slack会要求为应用命名。可以随意使用像“My First Amazing Slack App”这样的名字。不用担心!以后可以更改它。还会被要求选择一个工作空间来创建应用。点击下拉框并选择一个 - 它可以是在上一步中创建的测试工作空间,或者登录的任何其他工作空间。
当选择一个工作空间时,Slack会给出一条令人恐惧的警告,如果离开选择的工作空间,将失去管理应用的能力。这是因为所有新的Slack应用都是从单一工作空间开始的。
稍后,可以将应用从束缚中解放出来,使其可以被任何Slack工作空间安装。为此,需要将应用升级以支持SSL和OAuth。这并不难,但稍后会讨论这个问题。
就是这样!已经了解了三种可用的Slack API,并创建了第一个Slack应用。接下来,将编写一些代码来让新应用真正发挥作用。知道在阅读了整篇文章之后,没有编写任何代码可能会让感到失望。毕竟,这是CodeProject,不是吗?