UpMortem / slack-bot

Haly AI Slack Bot. A GPT powered chatbot that can answer questions about your organization using semantic search.
https://haly.ai
GNU Affero General Public License v3.0
22 stars 3 forks source link
ai bot buildinpublic chat chatbot flask gpt python semantic semantic-search semantic-search-algorithm semantic-search-bot semantic-search-service slack slack-bot slack-chatbot slackbot

Haly AI - Your Friendly Chatbot Companion

Haly

Welcome to Haly!

Haly is here to revolutionize the way you communicate and seek information. With its friendly and helpful nature, Haly is more than just a chatbot - it's your ultimate companion in the digital world.

What Can Haly Do?

Haly is an expert in everything - from providing answers and explanations, to generating ideas and assisting with various tasks. Here are just a few things Haly can help you with:

Why Choose Haly?

Haly is not just another chatbot - it's a personal assistant that truly cares about your needs. Here's why you should give Haly a try:

Get Started with Haly Today!

Ready to experience the power of Haly? Join the growing community of Haly users and see how this friendly chatbot can enhance your digital life. Simply visit our website https://haly.ai or integrate Haly into Slack following the instructions in this README, and let the conversation begin! Note: Haly is constantly learning and improving, so don't hesitate to provide feedback and suggestions. Together, we can make Haly even better!

Try for free

https://haly.ai

Setup for dev

Prereqs

  1. You must have a Slack organization where either you or an administrator can approve a new application.
  2. The ability to git clone a repo and run commands in either a Windows, Mac, or Linux terminal.
  3. Install python and pip.

Create your Slack bot:

  1. Go to https://api.slack.com/apps and hit the "Create New App" green button. Select "From an app manifest" option. image

  1. Choose workspace from dropdown if needed and paste the following content in the manifest. Hit Next button. Review the OAuth and Features tabs then hit Create. image
{
    "display_information": {
        "name": "Haly",
        "description": "AI Assistant",
        "background_color": "#2f3133",
        "long_description": "I'm Haly, your friendly Slack chatbot. I'm here to help you with any questions or problems you might have. I'm an expert in everything, so feel free to ask me anything. I'm a good listener and always ready to assist you. Just type your question or request, and I'll do my best to provide you with the information you need. You can direct message me or add me to a public channel. Just tag me to talk with me with @Haly."
    },
    "features": {
        "app_home": {
            "home_tab_enabled": true,
            "messages_tab_enabled": true,
            "messages_tab_read_only_enabled": false
        },
        "bot_user": {
            "display_name": "Haly",
            "always_online": true
        }
    },
    "oauth_config": {
        "redirect_urls": [
            "https://localhost:5173/slack-auth"
        ],
        "scopes": {
            "bot": [
                "app_mentions:read",
                "channels:history",
                "channels:join",
                "channels:read",
                "chat:write",
                "groups:history",
                "groups:write",
                "im:history",
                "im:read",
                "im:write",
                "mpim:history",
                "mpim:read",
                "mpim:write",
                "users:read"
            ]
        }
    },
    "settings": {
        "org_deploy_enabled": false,
        "socket_mode_enabled": false,
        "token_rotation_enabled": false
    }
}

  1. Select Basic information tab from the left nav bar, scroll down and make sure to save the "Signing Secret" for later. image

Scroll down further and use Haly Profile Image for her App icon or select your own if you wish.


  1. Next, select OAuth & Permissions tab from the left nav bar, under OAuth Tokens for Your Workspace section, hit Install to Workspace and follow the instructions there. image

  1. After installing, you will find a Bot user OAuth token. Save this for later use. image

Configure your project

LOG_LEVEL=DEBUG STANDALONE=true SLACK_USER_ID=U01JZQZQZQZ # Put a your workspace admin user ID if you know it


- Update SLACK_BOT_TOKEN (OAuth token), SLACK_SIGNING_SECRET, OPENAI_API_KEY ([Click here to learn how to get an API key from OpenAI](https://www.maisieai.com/help/how-to-get-an-openai-api-key-for-chatgpt)), and SLACK_USER_ID ([Click here how to get your Slack user ID](https://www.workast.com/help/article/how-to-find-a-slack-user-id/))
- Have venv installed `python3 -m pip install virtualenv`
- Create a venv at the root of the slack-bot project using `python3 -m virtualenv -p python3 myvenv`
- To enable the virtual environment run `source myvenv/bin/activate` on Linux/MacOS and `myvenv\Scripts\activate` on Windows - this opens up a terminal into the virtual environment.
- verify your python is isolated by typing `where python` in the above terminal. It should show a python path within the project.
- Run `pip install -r "requirements.txt" -r "src/semantic_search/requirements.txt"` to install dependencies in the same terminal
- Run `flask --debug run` to start the dev server in the same terminal

If you use the --debug flag when running flask, the application will rebuild whenever the source code changes.

## Ngrok setup
You will need ngrok to test the Bot locally
- Go to https://ngrok.com/download and follow the instructions to install ngrok
- Open a terminal an run `ngrok http localhost:8080`
- Copy the forwarding url that starts with *https* and go to you app setting in api.slack.com . Go to 'Event subscriptions'. Put your forwarding url + /slack/events in the Request URL input.
  - e.g: if your forwarindg url is https://3121-161-29-169-94.ngrok-free.app you put https://3121-161-29-169-94.ngrok-free.app/slack/events
- Subscribe to the neccesary bot events
![image](https://github.com/UpMortem/slack-bot/assets/5354324/f46f93f3-8713-432f-812f-1ba6218fc07f)

## Credits

This project is built on top of the following open source libraries:

- [Flask](https://flask.palletsprojects.com/) (version 2.3.3)
- [python-dotenv](https://pypi.org/project/python-dotenv/) (version 1.0.0)
- [slack-bolt](https://slack.dev/bolt-python/) (version 1.18.0)
- [openai](https://pypi.org/project/openai/) (version 0.28)
- [gunicorn](https://gunicorn.org/) (version 20.1.0)
- [gevent](https://www.gevent.org/) (version 23.9.1)

We are grateful to the developers and contributors of these libraries for their valuable work.

## Releases

 - Cloud build trigger will run every time you push a git tag that matches `^v.*$`