Skip to content

Repository files navigation

CALL-E Dify Plugin

CALL-E tools for Dify workflows and agents.

Source repository: https://github.com/CALLE-AI/call-e-dify-plugin

This plugin exposes safe outbound phone-call tools for CALL-E:

  • create_call previews or creates one outbound CALL-E call.
  • get_call fetches one CALL-E call result by call ID.
  • create_and_wait previews or creates one outbound CALL-E call, then polls until the call reaches a terminal status or timeout.
  • list_goals and get_goal read published CALL-E Goals without starting a call.
  • create_goal_run, get_goal_run, and create_goal_run_and_wait execute and monitor one phone-specific published Goal.

Phone calls are real-world side effects. Live calls require both dry_run=false and confirm_live_call=true.

Requirements

Install the Dify Plugin CLI by following the official Dify plugin documentation. For request and response details, see the CALL-E API reference.

Provider Credentials

Configure these provider credentials in Dify:

Credential Required Description
api_key Yes CALL-E API key. Create a key; it is stored as a secret input in Dify.
base_url Yes CALL-E API base URL. Defaults to https://api.heycall-e.com. Do not include /v1.

When credentials are saved, the provider performs a non-mutating authentication probe:

GET /v1/calls/call_dify_credential_probe_00000000000000000000000000000000

The CALL-E API documents GET /v1/calls/{call_id} and the stable error code not_found. A documented 404 not_found response means the API key was accepted and the probe call ID does not exist, so no call is created. 401 unauthorized and 403 forbidden are reported as credential configuration errors.

Tools

create_call

Creates one CALL-E call only when both live-call controls are set:

  • dry_run=false
  • confirm_live_call=true

Otherwise it returns a preview with the phone number masked.

get_call

Fetches one call result from GET /v1/calls/{call_id} and returns masked, parsed status fields.

create_and_wait

Creates one call, then polls until a terminal status or timeout. This is the most convenient tool for Dify workflows that need one final result object.

Goal tools

list_goals and get_goal read the published Goal catalog. They do not create a call.

create_goal_run runs one published Goal for one E.164 recipient. It accepts only the documented Goal Run body: phone_number and an optional flat variables_json object containing finite strings, numbers, or booleans. It requires a durable, business-stable idempotency_key; reuse that exact key and request when retrying a network failure.

create_goal_run_and_wait polls until the API returns a non-null result or a non-null error. A Goal Run with status=completed and both fields null is still processing. A tool timeout does not cancel the provider-side run: use get_goal_run with the returned ID instead of creating a duplicate.

Goal Run tools follow the same live-call boundary as Call tools: live execution requires both dry_run=false and confirm_live_call=true.

Safety Defaults

  • Requires E.164 destination phone numbers, for example +15555550123.
  • Rejects common placeholder numbers for live calls.
  • Masks phone numbers in text and JSON responses.
  • Does not create recurring schedules.
  • Does not expose API keys in logs or responses.
  • Defaults to dry_run=true.

For recurring workflows, keep recurrence in the host scheduler. CALL-E should receive exactly one call request per scheduled run.

Local Development

Create a virtual environment and install dependencies:

python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"

Run the local checks:

python -m pytest
python -m compileall provider tools utils main.py

Run the plugin locally:

python main.py

Package

From the parent directory:

dify plugin package ./call-e-dify-plugin

The package command creates a .difypkg file that can be uploaded to Dify or attached to a GitHub Release.

Release

  1. Update version in manifest.yaml and pyproject.toml.
  2. Run tests and compile checks.
  3. Package with dify plugin package ./call-e-dify-plugin.
  4. Create a GitHub Release.
  5. Upload the .difypkg as a release asset.

Live Call Boundary

Use live-call tools only for numbers you own or are explicitly authorized to call. Do not use this plugin for emergency services, deception, harassment, or hidden recurring outreach. For medical, legal, financial, or emergency contexts, keep the call task bounded to administrative or informational workflows and avoid professional advice or urgent decision-making.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages