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.3.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

blip_sdk-1.0.3-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: blip_sdk-1.0.3.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for blip_sdk-1.0.3.tar.gz
Algorithm Hash digest
SHA256 52854656056c17ad3fefcb19afeea57c9f4b5b43cf0d7ba0a9cf18e1f0accf9d
MD5 83ef5ff4332a506331e2686ec90a63fb
BLAKE2b-256 d34612973542f3a4dccbb075a2153855f967a0f83b5eb8cf7338c993d1671ec5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: blip_sdk-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 34.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for blip_sdk-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 81e1df15fa4066e9deda54a195a5a1971b1f531dbeb6ae113afbd0cfecaa76a6
MD5 5429f4921e0bc534f9fd3462a71a477b
BLAKE2b-256 7ebb5280f8531ca05eb3f0c9d5205665bbc561a94ccec366a3da430de86b120d

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