Nameko与Slack API交互的扩展
项目描述
Slack扩展用于Nameko
Nameko扩展,用于与Slack API交互。使用Python Slack开发者套件。
实时消息客户端
RTM扩展是Slack的实时消息API的Websocket客户端,允许您实时接收来自Slack的事件。rtm模块包含两个Nameko入口点,用于处理此类事件 - handle_event和handle_message。
使用方法
在您的Nameko服务配置文件中提供Slack机器人API令牌
# config.yml
SLACK:
TOKEN: "xoxb-abc-1232"
或在配置中使用环境变量
# config.yml
SLACK:
TOKEN: ${SLACK_BOT_TOKEN}
定义您的服务,使用入口点监听来自Slack的任何事件
# service.py
from nameko_slack import rtm
class Service:
name = 'some-service'
@rtm.handle_event
def on_any_event(self, event):
print(event)
最后,运行该服务
$ SLACK_BOT_TOKEN=xoxb-abc-1232 nameko run --config ./config.yaml service
starting services: some-service
{'type': 'hello'}
{'type': 'presence_change', 'user': 'ABCDE1234', 'presence': 'active'}
{'type': 'user_typing', 'user': 'ABCDE1234', 'channel': 'ABCDE1234'}
{'type': 'message', 'text': 'spam', 'channel': 'ABCDE1234', 'user': 'ABC...
{'type': 'presence_change', 'user': 'ABCDE1234', 'presence': 'active'}
...
更多示例
监听特定类型的事件
from nameko_slack import rtm
class Service:
name = 'some-service'
@rtm.handle_event('presence_change')
def on_presence_change(self, event):
pass
监听任何消息类型的事件
from nameko_slack import rtm
class Service:
name = 'some-service'
@rtm.handle_message
def on_any_message(self, event, message):
pass
使用正则表达式仅在匹配的消息上触发
from nameko_slack import rtm
class Service:
name = 'some-service'
@rtm.handle_message('^spam')
def on_message_starting_with(self, event, message):
pass
解析消息并将匹配的组作为位置或命名参数传递给入口点
from nameko_slack import rtm
class Service:
name = 'some-service'
@rtm.handle_message('^spam (\w*)')
def on_spam(self, event, message, egg):
pass
@rtm.handle_message('^egg (?P<ham>\w+)')
def on_egg(self, event, message, ham=None):
pass
在消息处理入口点中返回字符串以响应通道
from nameko_slack import rtm
class Service:
name = 'some-service'
@rtm.handle_message
def sure(self, event, message):
return 'sure, {}'.format(message)
运行多个RTM机器人
# config.yml
SLACK:
BOTS:
alice: ${ALICE_BOT_TOKEN}
bob: ${BOB_BOT_TOKEN}
# service.py
from nameko_slack import rtm
class Service:
name = 'some-service'
@rtm.handle_message(bot_name='alice')
def listen_as_alice(self, event, message):
pass
@rtm.handle_message(bot_name='bob')
def listen_as_bob(self, event, message):
pass
$ ALICE_BOT_TOKEN=xoxb-aaa-111 BOB_BOT_TOKEN=xoxb-bbb-222 nameko run --config ./config.yaml service
starting services: some-service
WEB API客户端
一个简单的依赖提供者,包装Slack WEB API客户端。
使用方法
依赖提供者使用与RTM扩展相同的配置键
# config.yml
AMQP_URI: 'pyamqp://guest:guest@localhost'
SLACK:
TOKEN: ${SLACK_BOT_TOKEN}
# service.py
from nameko.rpc import rpc
from nameko_slack import web
class Service:
name = 'some-service'
slack = web.Slack()
@rpc
def say_hello(self, name):
self.slack.api_call(
'chat.postMessage',
channel="#nameko",
text="Hello from Nameko! :tada:")
您也可以使用多个机器人
# config.yml
AMQP_URI: 'pyamqp://guest:guest@localhost'
SLACK:
BOTS:
alice: ${ALICE_BOT_TOKEN}
bob: ${BOB_BOT_TOKEN}
# service.py
from nameko.rpc import rpc
from nameko_slack import web
class Service:
name = 'some-service'
alice = web.Slack('alice')
bob = web.Slack('bob')
@rpc
def say_hello(self):
self.alice.api_call(
'chat.postMessage',
channel="#nameko",
text="Hello from Alice! :tada:")
self.bob.api_call(
'chat.postMessage',
channel="#nameko",
text="Hello from Bob! :tada:")
项目详情
关闭
nameko-slack-0.0.6.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e79ffeb69dd1d4495e22e23f39d60b1aa2dcf52b0af2bfb157d35b75fbd3750b |
|
MD5 | 5f532f467bdab4e65e20d986ca48eb11 |
|
BLAKE2b-256 | cdd89fa2b15600e20f441789bb6f72325ea7fe05f30dc06eb0af753f28acb466 |
关闭
nameko_slack-0.0.6-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9fdd8cd63cffc243122719938dbfd3ebc7440ef576d40472b62b34118930c983 |
|
MD5 | 51abbf94a7d7ac06353bc48c6a2b5559 |
|
BLAKE2b-256 | c8093075a26a0f9b3f560ba4e74d3729e3154daec04ff47644b8c6271e011102 |