用于创建应用程序的工具包

slackapptk的Python项目详细描述


Python3用于构建Slack应用程序的工具包

slackapptk包用于促进Slack的开发 应用程序使用Python3和您选择的web框架。作为开发者 对于Python中的Slack应用程序,我希望有一个库可以让我完成两个 主要目标:

  1. 提供路由从^{em1}接收的消息的机制$api.slack.com网站到 我的应用程序中的正确代码。这个过程有时被称为回调 路由。在

  2. 创建/斜杠命令具有丰富的功能集,如 使用Python标准argparse包找到。在

注意:slapapptk包使用slackclient提供的Slack 不是替代品。也就是说,已经定义了widgetsslackapptk.web中,在slackclient中尚不可用;并且作为slackclient被更新 这些小部件将被折旧

注:对于SlackClient<;=2.5

如果您希望在Slack Client 2.5.0版本上进行开发,请使用分支v1。在

TLDR;见工作示例

使用slackapptk的文档目前正在开发中。那个 说你可以找到一个完整的使用FlaskWeb框架的工作示例 在example-slackapp;看到了吗 README.md更多详细信息。在

概述

Slack应用程序可以接收来自api.slack.com网站有很多原因 应用程序在api.slack.com网站门户。在

为此,README将使用术语entrypoint

  • 用户输入了/斜杠命令
  • 用户发起某种interactivity请求,例如单击一个按钮
  • 用户启动下拉菜单,应用程序必须从外部源获取数据
  • 用户选择了附加到松弛消息的action
  • 应用程序收到一个Slack Event,这是它配置的订阅的结果

术语request指从中接收的消息api.slack.com网站由于 任何这些入口点。在

在应用程序中配置时api.slack.com网站门户,开发人员将 确定要调用的特定应用程序API路由。然后开发者需要 要使用自己选择的API框架编写prerequest代码处理程序, 例如烧瓶。在

要创建应用程序实例:

fromslackapptk.appimportSlackAppapp=SlackApp()app.config.token="<My app bot token value>"app.config.signing_secret="<My app signing secret"

您可以绑定特定于应用程序的代码来处理入站api.slack.com网站 使用以下内容的消息:

  • app.ic.<interactive-component>.on-其中是以下内容之一

    • block_actions-绑定块操作请求的回调
    • select-要绑定外部菜单的回调,请选择填充
    • view-绑定视图提交的回调
    • view_closed-绑定视图的回调已关闭
    • imsg-将回调绑定到交互式消息附件(过时)
    • dialog-将回调绑定到对话框提交(过时)
  • app.commands.register-注册/slash命令解析器和回调处理程序

  • app.events-注册所有事件订阅

处理来自的入站邮件api.slack.com网站你需要调用其中一个应用程序 API路由处理程序上下文中的处理程序。例如,如果您定义 为您的/slash命令之一调用的API路由处理程序 app.handler_slash_command()来处理消息。在

示例

slackapptk的主要动机是接收请求并将其定向到 特定于请求负载的应用程序入口点处理程序。考虑 一个示例,其中应用程序向用户显示一个包含 按钮,用户单击该按钮。应用程序代码在中创建按钮 一个块,然后将该块ID绑定到应用程序“交互式组件” 块ID的处理程序,如以下代码所示代码段:

^{pr2}$

注册/回调机制也可以编码为decorator,用于 示例:

@app.ic.block_actions.on(block.block_id)defon_block_button(rqst:BlockActionRequest,action:ActionEvent):# this function is called when the app receives the request message from# api.slack.com when the User clicked the button.# send a message back to the User indicating the value of the buttonresp=Response(rqst)resp.send("button pressed, block vlaue is: %s",action.value)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
编译器构造为什么在Java中允许初始化对Null的引用?   java手动调用javax的actionPerformed。摆动计时器   使用git分支的java Maven版本控制   Java8句子流   java JPA OneToOne和OneToMany实体实例化/创建   java如何将值添加到列表<Map<String,Object>>?   java如何使用ComboBox在一个框架内更改JPanel。getSelectedIndex()   java在比较XML和xmlunit时忽略文本差异   java无法从其他pc连接到本地主机   Java中分配对象id的优雅方式   Java中静态变量的使用   java试图从Neteller获取OAuth访问令牌时产生错误:“服务器返回HTTP响应代码:401表示URL”   Java:基元类型是否会影响性能?   java可以让hasNext()不区分大小写吗?   基于AutoCompleteTextView建议属性或AutoCompleteTextView值的java Android搜索   java流文件到firefox浏览器有时无法打开应用程序对话框   在没有ArrayList的Java中返回数组中的搜索结果   复制java。木卫一。IOException:数据错误(CRC)   java为什么我在尝试删除Facebook测试用户时会出现“方法未实现”错误   java如何使用JNA调用SetProcessReliationPolicy