Skip to main content

Opensource python wrapper to Sarufi Conversation API

Project description

sarufi-python-sdk

Sarufi Python SDK to help you interact with SARUFI platform

Installation

Make sure you have sarufi package installed on your machine before launching your telegram bot, you can easily install by the following command;

git clone https://github.com/Neurotech-HQ/sarufi-python-sdk
cd sarufi-python-sdk
sarufi-python-sdk $ python setup.py install

Authentication

To authenticate you're bot, you have to specify your client_id and password for Sarufi Platform just as shown below;

>>> from sarufi import Sarufi
>>> sarufi = Sarufi(api_key='your API KEY')

Creating a Bot

To create you're bot with sarufi, you have to be aware of two importants idea or concepts which is intents and flow.

Here an example on how to create your bot;

sarufi.create_bot(
    name="Athony bot",
    description="My bot can do a lot",
    intents={
        "salamu": ["Mambo", "Hi", "Hello", "Niaje"],
        "contact": [
            "naomba mawasiliano",
            "naomba number",
            "naomba namba",
            "nipe mawasiliano",
            "nipe contact",
        ],
    },
    flow={
        "salamu": {"message": ["Hi", "Naimani upo salama"], "next": "end"},
        "contact": {
            "message": ["Ungependa kupata namba ya nani ?"],
            "next_state": "chukua_namba",
        },
        "chukua_namba": {
            "message": ["Namba ya huyo mtu ni 07374734737", "Karibu tena !!"],
            "next_state": "end",
        },
    },
)

Creating a Bot from file

You can create your bot from a file, Here is an example on how to create your bot from a file;

from sarufi import Sarufi

sarufi = Sarufi(api_key='your API KEY')


if __name__ == "__main__":
    response = sarufi.create_from_file(
        intents="data/intents.yaml",
        flow="data/flows.yaml",
        metadata="data/metadata.yaml",
    )
    print(response.data)

Updating bot

Updating the bot is comparatively similar to creating a bot but this time you have to explicity specify the project ID of your bot.

sarufi.update_bot(
    name="Athony bot",
    description="My bot can do a lot",
    intents={
        "salamu": ["Mambo", "Hi", "Hello", "Niaje"],
        "contact": [
            "naomba mawasiliano",
            "naomba number",
            "naomba namba",
            "nipe mawasiliano",
            "nipe contact",
        ],
    },
    flow={
        "salamu": {"message": ["Hi", "Naimani upo salama"], "next": "end"},
        "contact": {
            "message": ["Ungependa kupata namba ya nani ?"],
            "next_state": "chukua_namba",
        },
        "chukua_namba": {
            "message": ["Namba ya huyo mtu ni 07374734737", "Karibu tena !!"],
            "next_state": "end",
        },
    },
    id=2,
)

Update a bot from file

You can update your bot from a file as follows;

from sarufi import Sarufi

sarufi = Sarufi(api_key='your API KEY')


if __name__ == "__main__":
    response = sarufi.update_from_file(
        id=5,
        intents="data/intents.yaml",
        flow="data/flows.yaml",
        metadata="data/metadata.yaml",
    )
    print(response.data)

Using it in a conversation

Here you have to know the bot ID and also specify your user unique ID;

>>> from sarufi import Sarufi
>>> sarufi = Sarufi(api_key='your API KEY')
2022-08-23 18:30:32,918 - root - INFO - Getting token
>>> bots = sarufi.bots()
2022-08-23 18:30:38,223 - root - INFO - Getting bots
>>> bots
[Bot(id=4, name=iBank), Bot(id=5, name=Maria)]
>>> maria = bots[1]
>>> maria.respond('Hi')
2022-08-23 18:30:52,065 - root - INFO - Sending message to bot and returning response
2022-08-23 18:30:54,126 - root - INFO - Status code: 200
2022-08-23 18:30:54,127 - root - INFO - Message sent successfully
{'message': [['vipi uhali gani?'], ['umeshindaje?'], ['mzima wewe?'], ['Hello! u hali gani ?'], ['Freshi nambie ?'], ['Hi, mzima wewe'], ['salama sijui wewe'], ['za kwako?'], ['Vipi hali yako'], ['Uhali gani?']]}
>>> maria.respond("mi mzima wa afya")
2022-08-23 18:31:02,245 - root - INFO - Sending message to bot and returning response
2022-08-23 18:31:04,237 - root - INFO - Status code: 200
2022-08-23 18:31:04,237 - root - INFO - Message sent successfully
{'message': [['Ninafurahi kujua uko salama'], ['nimefurahi kusikia kutoka kwako'], ['Nipo salama pia, nimefurahi kusikia kutoka kwako'], ['Napenda kukuona ukiwa na furaha'], ['Nimefurahi kusikia hivyo'], ['Salama kabisa'], ['Mzima kabisa']]}

Get a bot

Query a bot by ID

>>> from sarufi import Sarufi
>>> sarufi = Sarufi(api_key='your API KEY')
>>> maria= sarufi.get_bot(5)
2022-08-23 18:44:05,473 - root - INFO - Getting token
>>> maria
Bot(id=5, name=Maria)

Deleting a bot

Delete a bot by ID

>>> from sarufi import Sarufi
>>> sarufi = Sarufi(api_key='your API KEY')
>>> sarufi.delete_bot(5)

Issues ?

Are you facing any issue with the usage of the package, please raise one

Contributors

  1. kalebu
  2. Anthony Mipawa

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

sarufi-0.1.9-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file sarufi-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: sarufi-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.6

File hashes

Hashes for sarufi-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 232dae3c36c9fc123f39356b8f517bdba2c0907c70166d2070ecfd7e266d9af9
MD5 df8f494389554271578671c182b3f94e
BLAKE2b-256 f72688a8360e33ad3dd37cad30b0b75d544b39083e715deaf07a7208cf4a5135

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page