Name | slack-qna JSON |
Version |
0.1.1
JSON |
| download |
home_page | |
Summary | An easy plug-and-use library for developing Slack BOT that serves a Q&A-like use case. |
upload_time | 2023-12-18 18:16:50 |
maintainer | |
docs_url | None |
author | lokwkin |
requires_python | >=3.11,<4.0 |
license | |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Slack Q&A
An easy plug-and-use library for developing Slack BOT that serves a Q&A-like use case.
For NodeJS version, please see https://github.com/lokwkin/slack-qna-node
## Description
High level flow:
1. User messages this BOT via either:
1. Direct Message
2. Mention in Channel
3. Slack Command
2. The BOT shows a loading reaction to the message.
3. The BOT relays user's message to your custom handler, and expect for a result either in `Text`, `File` or `Image` type.
4. The BOT reply the user's message in Slack Thread.
5. The BOT also shows a success reaction to the message.
Note:
- This BOT uses Slack's Socket Mode instead of Webhook mode for slack connection, so it does not require an exposed public endpoint. But your services need to be long running.
## Sample use cases
#### Use with ChatGPT (Text Response)
##### Loading
<img src="./docs/chatgpt-a.png" width="50%">
##### Reply
<img src="./docs/chatgpt-b.png" width="50%">
#### Use with Dall-E (Image Response)
##### Loading
<img src="./docs/dalle-a.png" width="50%">
##### Reply
<img src="./docs/dalle-b.png" width="50%">
## Usage
### Install
```
pypi install slack-qna
```
```python
from slack_qna.slack_qna import SlackQna
from slack_qna.schema import IncomingMessage, CommandHook, Reactions
slack_bot_token = os.getenv("SLACK_BOT_TOKEN")
slack_app_token = os.getenv("SLACK_APP_TOKEN")
bot_user_id = os.getenv("SLACK_BOT_USER_ID")
slackQnaBot = SlackQna(slack_bot_token, slack_app_token, bot_user_id, Reactions(
loading="loading",
success="white_check_mark",
failed="x"
))
def my_handler(message: IncomingMessage):
return "Hi there"
slackQnaBot.register_handler(CommandHook(is_sync=True, data_type='text', handler=my_handler))
slackQnaBot.listen(direct_message=True, mention=True)
```
### Slack Setup
1. Register an Slack App in portal https://api.slack.com/
2. "Socket Mode" -> Enable Socket Mode
3. "OAuth & Permissions" -> "Bot Token Scopes" -> Grant these permissions: `app_mentions:read`, `channels:history`, `chat:write`, `im:history`, `im:write`, `reactions:write`, `groups:history`, `files:write`
4. "Event Subscription" -> "Enable Event" -> "Subscribe to bot events" -> Add `message.im` and `app_mention` --> "save"
5. "App Home" -> "Message Tab" -> Enable "Allow users to send Slash commands and messages from the messages tab"
6. Install bot to your workspace
7. Obtain your Bot Token from "OAuth & Permissions" > "Bot User OAuth Token"
8. Obtain your App Token from "Basic Information" > "App Level Token"
9. "Install App" -> Reinstall to workspace if neccessary
Raw data
{
"_id": null,
"home_page": "",
"name": "slack-qna",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "lokwkin",
"author_email": "lokwkin@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/96/fa/31e11b04af930f169b3c8e7e6cacd9d741ad93e1ba54ef3fca8fc8447035/slack_qna-0.1.1.tar.gz",
"platform": null,
"description": "# Slack Q&A\n\nAn easy plug-and-use library for developing Slack BOT that serves a Q&A-like use case.\n\nFor NodeJS version, please see https://github.com/lokwkin/slack-qna-node\n\n## Description\n\nHigh level flow:\n1. User messages this BOT via either:\n 1. Direct Message\n 2. Mention in Channel\n 3. Slack Command\n2. The BOT shows a loading reaction to the message.\n3. The BOT relays user's message to your custom handler, and expect for a result either in `Text`, `File` or `Image` type.\n4. The BOT reply the user's message in Slack Thread.\n5. The BOT also shows a success reaction to the message.\n\nNote:\n- This BOT uses Slack's Socket Mode instead of Webhook mode for slack connection, so it does not require an exposed public endpoint. But your services need to be long running.\n\n## Sample use cases\n\n#### Use with ChatGPT (Text Response)\n##### Loading\n<img src=\"./docs/chatgpt-a.png\" width=\"50%\">\n\n##### Reply\n<img src=\"./docs/chatgpt-b.png\" width=\"50%\">\n\n#### Use with Dall-E (Image Response)\n##### Loading\n<img src=\"./docs/dalle-a.png\" width=\"50%\">\n\n##### Reply\n<img src=\"./docs/dalle-b.png\" width=\"50%\">\n\n## Usage\n\n### Install\n```\npypi install slack-qna\n```\n\n```python\nfrom slack_qna.slack_qna import SlackQna\nfrom slack_qna.schema import IncomingMessage, CommandHook, Reactions\n\nslack_bot_token = os.getenv(\"SLACK_BOT_TOKEN\")\nslack_app_token = os.getenv(\"SLACK_APP_TOKEN\")\nbot_user_id = os.getenv(\"SLACK_BOT_USER_ID\")\n\nslackQnaBot = SlackQna(slack_bot_token, slack_app_token, bot_user_id, Reactions(\n loading=\"loading\",\n success=\"white_check_mark\",\n failed=\"x\"\n ))\n\ndef my_handler(message: IncomingMessage):\n return \"Hi there\"\n\nslackQnaBot.register_handler(CommandHook(is_sync=True, data_type='text', handler=my_handler))\nslackQnaBot.listen(direct_message=True, mention=True)\n```\n\n### Slack Setup\n1. Register an Slack App in portal https://api.slack.com/\n2. \"Socket Mode\" -> Enable Socket Mode\n3. \"OAuth & Permissions\" -> \"Bot Token Scopes\" -> Grant these permissions: `app_mentions:read`, `channels:history`, `chat:write`, `im:history`, `im:write`, `reactions:write`, `groups:history`, `files:write`\n4. \"Event Subscription\" -> \"Enable Event\" -> \"Subscribe to bot events\" -> Add `message.im` and `app_mention` --> \"save\"\n5. \"App Home\" -> \"Message Tab\" -> Enable \"Allow users to send Slash commands and messages from the messages tab\"\n6. Install bot to your workspace\n7. Obtain your Bot Token from \"OAuth & Permissions\" > \"Bot User OAuth Token\"\n8. Obtain your App Token from \"Basic Information\" > \"App Level Token\"\n9. \"Install App\" -> Reinstall to workspace if neccessary",
"bugtrack_url": null,
"license": "",
"summary": "An easy plug-and-use library for developing Slack BOT that serves a Q&A-like use case.",
"version": "0.1.1",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "beaa8a42139a27e42502b15e4dc17652d591a0026b2ec3fa5c1cb7ebf0d449bc",
"md5": "7cfb63f26231681a036cc3119f8dd6f6",
"sha256": "f2bef9529410a8765413e799d80c3f01ee1bb7e0b94142cbc6fcc0cc6307e513"
},
"downloads": -1,
"filename": "slack_qna-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7cfb63f26231681a036cc3119f8dd6f6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11,<4.0",
"size": 5016,
"upload_time": "2023-12-18T18:16:49",
"upload_time_iso_8601": "2023-12-18T18:16:49.279905Z",
"url": "https://files.pythonhosted.org/packages/be/aa/8a42139a27e42502b15e4dc17652d591a0026b2ec3fa5c1cb7ebf0d449bc/slack_qna-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "96fa31e11b04af930f169b3c8e7e6cacd9d741ad93e1ba54ef3fca8fc8447035",
"md5": "aae54735ab8052eca6fd45db48152374",
"sha256": "d00c7cb5b47829e84ef251bcc792acc96a98b7cf088ff4e55d838796e8054de1"
},
"downloads": -1,
"filename": "slack_qna-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "aae54735ab8052eca6fd45db48152374",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11,<4.0",
"size": 4186,
"upload_time": "2023-12-18T18:16:50",
"upload_time_iso_8601": "2023-12-18T18:16:50.492270Z",
"url": "https://files.pythonhosted.org/packages/96/fa/31e11b04af930f169b3c8e7e6cacd9d741ad93e1ba54ef3fca8fc8447035/slack_qna-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-18 18:16:50",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "slack-qna"
}