Texa DeskDevelopers

Overview

SDKs

Texa's SDKs for Python, JavaScript and TypeScript, React Native, Go, Swift and PHP, and the widgets for websites and apps.

Every SDK is a thin client over the same Texa API: one method per route, errors that carry the request's id, an action handler that runs Texa AI's action requests with your functions, and a webhook check. None of them retries behind your back: to retry safely, send the same Idempotency-Key or message_id again (why). Each passes the same contract tests against the Texa API.

Language Install Runs on
Python pip install texa your server; sync and async
JavaScript and TypeScript npm install @texadesk/sdk Node 20+, Deno, Bun, edge runtimes
React Native and Expo npm install @texadesk/react-native your customers' app: the chat component
Go go get github.com/texadigital/texa-go your server; standard library only
Swift Swift Package Manager: https://github.com/texadigital/texa-swift server-side Swift; voice in iOS apps
PHP composer require texa/texa-php PHP 8.1+: Laravel, Symfony, plain PHP
Java and Kotlin coming soon Java 17+
Flutter coming soon your customers' app

The source of every SDK is public at github.com/texadigital/texa-sdks, MIT licensed. Report a problem there.

Server SDKs and widgets

  • Server SDKs hold your API key. They run on your server only.
  • Widgets run in a web page or an app and never hold a key. Your server makes a widget session for the customer and gives the widget its token:
  • widget.js for websites, one script tag;
  • @texadesk/react-native for React Native and Expo apps;
  • Flutter, coming soon.

The same calls in every language

Route Python JavaScript Go PHP
POST /v1/conversations open_conversation openConversation OpenConversation openConversation
POST …/messages send_message sendMessage SendMessage sendMessage
POST …/action-results action_result actionResult ActionResult actionResult
POST …/handover, …/handback, …/close handover, handback, close the same Handover, Handback, Close the same
POST …/human-messages human_message humanMessage HumanMessage humanMessage
POST …/voice-sessions voice_session voiceSession VoiceSession voiceSession
GET …/transcript, …/export, …/quality transcript, export, quality transcript, exportConversation, quality Transcript, Export, Quality transcript, export, quality
POST /v1/widget-sessions widget_session widgetSession WidgetSession widgetSession
GET /v1/events events (all pages), events_page eventsPage Events, EventsPage events, eventsPage
Customers get_customer, merge_customer, forget_customer getCustomer, mergeCustomer, forgetCustomer GetCustomer, MergeCustomer, ForgetCustomer the same as JavaScript
Sandbox fixtures put_fixture, list_fixtures, delete_fixture putFixture, deleteFixture PutFixture, DeleteFixture putFixture, listFixtures, deleteFixture
Run action requests run_actions runActions RunActions runActions
Check a webhook webhooks.parse parseWebhook ParseWebhook Texa\Webhooks::parse

The action handler

run_actions (runActions) takes the answer to a request and a function per action. For each action request Texa didn't already run (handled_by is not set), it calls your function with the inputs, gives Texa the result, and collects what Texa AI says next. Return the action's data, or {"status": "failed", "error": "..."}. Throwing is a failure too, which Texa AI tells the customer honestly. Actions with no function are left for you.