3.5 KiB
3.5 KiB
Zako Tap SDK js
This is the javascript sdk package required to create a javascript tap server responsible for the audio of zako, a discord audio bot.
Requirements
| package | version |
|---|---|
| eventemitter | 0.2.0 |
| requests | 2.32.4 |
| websockets | 15.0.1 |
Quickstart Example
First, you need to download zako-sdk-py on your project.
pip install zako-sdk-py
Then, you can use the sdk. Here is some example.
import io
import asyncio
from zakotap import Client, ClientData, HelloResponse, AudioRequest
streamFile = io.BytesIO(b"test audio data")
clientData: ClientData = {
"name": "your tap name",
"token": "your tap token",
"zakoEndpoint": "zako endpoint (default is https://api.zako.ac)"
}
client = Client(clientData)
def on_ready(data: HelloResponse):
print("Client is ready. Connected Tab Hub version", data.get("version"))
def on_close(message: str):
print("Connection closed:", message)
def on_warn(message: str):
print("Warning:", message)
def on_error(message: str):
print("Error:", message)
def on_audio_sync(audio_request: AudioRequest):
print("Audio")
loop = asyncio.get_event_loop()
task = loop.create_task(on_audio(audio_request))
async def on_audio(audio_request: AudioRequest):
print("Received audio request:", audio_request, flush = True)
await client.send(audio_request.get("id"), streamFile)
client.on("warn", on_warn)
client.on("error", on_error)
client.on("ready", on_ready)
client.on("close", on_close)
client.on("audio", on_audio_sync)
client.connect()
Client Description
1. Create Client and Connect
You can create tap server client by call Client class in zakotap package.
You should put the client data written as ClientData type inside the parentheses of Client.
You can then connect to the tab server using client.connect().
from zakotap import Client, ClientData
clientData: ClientData = {
"name": "your tap server name",
"token": "your tap server token",
"zakoEndpoint": "zako tap hub endpoint (option)"
}
client = Client(clientData)
client.connect()
2. Client Event
Using the client created above, you can use client.on to perform a specific function when the EventEmitter's event is called.
client.on("event name", function)
The types of events are specified in EmitterEvents among the types in the zakotap package.
Emitter Events
"ready": This event is called when the zako tap server successfully connects to thezako tap hub."close": This event is called when theweb socketbetween thezako tap serverandtap hubis closed."audio": This event is called when anaudio requestis received from thezako tap hub."warn": This event is called when a warning occurs within the zakotap package that should notify the developer."error": This event is called when an error occurs within the zakotap package.
3. Send Audio
Work Flow
sequenceDiagram
participant TapServer
participant TapHub
TapServer->>TapHub: WS TapHello
TapHub-->>TapServer: WS TapResponse
Note right of TapServer: Waiting for audio request
TapHub-->>TapServer: WS AudioRequest
TapServer->>TapHub: POST AudioStream
Related Documents
Authors
- @ridanit-ruma (Discord:
ruma0607)