Skip to main content

BLiP SDK Python

Project description

blip-sdk-python

Simple BLiP SDK for Python

This is a work in progress

wemake-python-styleguide Build PyPI Publish PyPI - Downloads PyPI PyPI - Python Version


Read more about BLiP here

Installing

You should install the blip-sdk package to access the BLiP server:

pip install blip-sdk
pip install lime-transport-websocket

Instantiate the BlipSdk Client

You will need an identifier and an access key to connect a chatbot to BLiP. To get them:

  • Go to Painel BLiP and login;
  • Click Create chatbot;
  • Choose the Create from scratch model option;
  • Go to Settings and click in Connection Information;
  • Get your bot's identifier and access key.

In order to instantiate the client use the ClientBuilder class informing the identifier and access key

You can start the client asynchronously or synchronously

Asynchronously (the recommended way)

import asyncio

from lime_transport_websocket import WebSocketTransport
from blip_sdk import ClientBuilder


async def main_async() -> None:
    # Create a client instance passing the identifier and access key of your chatbot
    client = ClientBuilder() \
        .with_identifier(IDENTIFIER) \
        .with_access_key(ACCESS_KEY) \
        .with_transport_factory(lambda: WebSocketTransport()) \
        .build()

    # Connect with the server asynchronously
    # Connection will occurr via websocket on the 8081 port
    await client.connect_async()
    print('Application started. Press Ctrl + c to stop.')

loop = asyncio.get_event_loop()
loop.run_until_complete(main_async())
loop.run_forever()

Or the sync version (we only recommend for scripts)

from time import sleep
from lime_transport_websocket import WebSocketTransport
from blip_sdk import ClientBuilder


def main() -> None:
    # Create a client instance passing the identifier and access key of your chatbot
    client = ClientBuilder() \
        .with_identifier(IDENTIFIER) \
        .with_access_key(ACCESS_KEY) \
        .with_transport_factory(lambda: WebSocketTransport()) \
        .build()

    # Connect with the server asynchronously
    # Connection will occurr via websocket on the 8081 port
    client.connect()
    print('Application started. Press Ctrl + c to stop.')

main()

while True:
    sleep(1)

Each client instance represents a server connection and can be reused. To close a connection:

await client.close_async()

# or sync
client.close()

Receiving

All messages sent to the chatbot are redirected to registered receivers of messages and notifications. You can define filters to specify which envelopes will be handled by each receiver. The following example shows how to add a simple message receiver:

client.add_message_receiver(Receiver(True, lambda m: print(m)))

The next sample shows how to add a notification receiver with a filter for the received event type:

client.add_notification_receiver(Receiver(lambda n: n.event == NotificationEvent.RECEIVED, lambda n: print(n)))

It's also possible to use a custom function as a filter:

Example of a message receiver filtering by the originator:

def filter_originator(message: Message) -> bool:
    return message.from_n == '553199990000@0mn.io'

client.add_message_receiver(Receiver(filter_originator, lambda m: print(m)))

Each registration of a receiver returns a handler that can be used to cancel the registration:

remove_receiver = client.add_message_receiver(Receiver(True, lambda m: print(m)))

remove_receiver()

Sending

It's possible to send notifications and messages only after the session has been stablished.

The following sample shows how to send a message after the connection has been stablished:

await client.connect_async()

# Once connected it's possible to send messages
message = client.send_message(Message('text/plain', 'message', to=user_id))

The following sample shows how to send a notification after the connection has been stablished:

client.connect_async()
notification = Notification(
    NotificationEvent.Received,
    Reason(ReasonCode.ApplicationError, 'failed'),
    to=user_Id
)
client.send_notification(notiication)

Contributing

For information on how to contribute to this package, please refer to our Contribution guidelines.

Project details


Download files

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

Source Distribution

blip_sdk-1.0.4.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

blip_sdk-1.0.4-py3-none-any.whl (36.0 kB view details)

Uploaded Python 3

File details

Details for the file blip_sdk-1.0.4.tar.gz.

File metadata

  • Download URL: blip_sdk-1.0.4.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

File hashes

Hashes for blip_sdk-1.0.4.tar.gz
Algorithm Hash digest
SHA256 e24c1dbeb5e0feb0e56224ef06d5d7822569ae0d57a1dc70a37c4954082fcd02
MD5 cf88b3e9571cefef1284405e7ffc2bcd
BLAKE2b-256 af88318bf1682a8f207886da183799c3c6bf7983b8dd628d8415f9f09f4f10ba

See more details on using hashes here.

File details

Details for the file blip_sdk-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: blip_sdk-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 36.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

File hashes

Hashes for blip_sdk-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8ceb0b6e96ee474e7e0ea5d39c3bf1d1caf05fc5a7e7eae61c14219c0e1cb7d0
MD5 1b605022cc8be07604b4c6bab2eb6141
BLAKE2b-256 7e4da97d34fb2b343ea480d2d6225fc6a48eea189ed289b2fc1b8d373b76bdee

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