Skip to main content

dial-agentframework

Official Dial tools for the Microsoft Agent Framework — give a ChatAgent the ability to send SMS, receive OTP codes, and place AI voice calls through Dial. Agents automating signups and web tasks get a real phone identity.

It's the Agent Framework sibling of dial-langchain and dial-crewai: each tool is an agent_framework.FunctionTool (built with the tool decorator) wrapping the dial-sdk client. It adds nothing to the REST contract — it just shapes Dial's operations into Agent Framework tools.

Targeting the original AutoGen (autogen-agentchat) instead? Use dial-autogen.

Install

pip install dial-agentframework

This pulls in dial-sdk and agent-framework-core. The Agent Framework keeps each model provider in its own package, so also install a chat client — e.g. agent-framework-openai (below) or, for Azure OpenAI, the framework's Azure integration.

Give the tools to an agent

Build one DialClient, pass it to dial_tools, and hand the result to an Agent. Every tool shares that one client — a single connection pool for the whole agent session — and you own its lifecycle (await client.close() when done):

from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient  # pip install agent-framework-openai
from dial_sdk import DialClient, DialConfig
from dial_agentframework import dial_tools

dial = DialClient(DialConfig(api_key="sk_live_..."))  # close with `await dial.close()`

agent = Agent(
    OpenAIChatClient(),  # or an Azure OpenAI client for enterprise/Azure deployments
    name="phone_agent",
    instructions="You operate the team's Dial phone number for SMS, OTP, and voice calls.",
    tools=dial_tools(dial),
)

result = await agent.run("Text +14155550123 from pn_abc saying our table is ready.")
print(result.text)

DialConfig also takes an optional base_url to target a non-default deployment.

Azure OpenAI: install the framework's Azure integration and swap in its Azure OpenAI chat client — the Dial tools are identical regardless of which provider drives the agent.

Or pick individual tools

Each builder returns one AIFunction:

from dial_agentframework import send_message_tool, wait_for_message_tool

tools = [
    send_message_tool(dial),
    wait_for_message_tool(dial),
]

Available tools

Each builder takes your shared DialClient:

Builder Tool name Action
list_numbers_tool list_numbers List your phone numbers
purchase_number_tool purchase_number Provision a new number (billable)
set_number_properties_tool set_number_properties Update a number's nickname / inbound instruction
send_message_tool send_message Send an SMS (optionally MMS)
reply_to_message_tool reply_to_message Reply or react to a message
list_messages_tool list_messages List recent messages
make_call_tool make_call Place an AI voice call
list_calls_tool list_calls List recent calls
get_call_tool get_call Fetch one call by id
get_billing_tool get_billing Credit balance, subscription, per-number mode
wait_for_message_tool wait_for_message Block until the next inbound SMS arrives, or time out

OTP flow

The point of phone identity for an agent: send a code and read the reply. wait_for_message blocks until the next inbound SMS arrives, so an agent can:

  1. trigger a signup that texts a code to your Dial number,
  2. call wait_for_message to read the inbound code,
  3. enter it back into the signup form.

See examples/signup_agentframework.ipynb for a runnable agent.

Notes

  • The Agent Framework runs tools in an async loop, so these tools are async-native — no async→sync bridge.
  • send_message is a write action and isn't idempotent — a re-invoke after a failure can send a duplicate. make_call accepts an idempotency_key.
  • wait_for_message is backed by Dial's presence-based event stream — for durable, at-least-once delivery, register a webhook.

See the Microsoft Agent Framework integration docs for the full guide.

Release files for dial-agentframework 0.17.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dial-agentframework 0.17.0
File Size Uploaded
dial_agentframework-0.17.0.tar.gz 94.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dial-agentframework 0.17.0
File Interpreter ABI Platform
dial_agentframework-0.17.0-py3-none-any.whl Python 3 none any Details

Total release size: 104.6 kB

Release files / dial_agentframework-0.17.0.tar.gz

Download URL dial_agentframework-0.17.0.tar.gz
Size 94.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1832aa750ba90ee7f70f91a2b503bea81d126ab60ec2ec25a7a769381ab7cd8e
BLAKE2b-256 checksum
How to use checksums
7b5d7fb75b1ea091231e8d7002c80015f558f32495456ee4b0827b0b2333cd9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / dial_agentframework-0.17.0-py3-none-any.whl

Download URL dial_agentframework-0.17.0-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed317abf0fa5591f0e807791e1621589d5070969c0023cd4548c0f28c4090fd8
BLAKE2b-256 checksum
How to use checksums
185245a37f4ea08513482707469284526d7998218c39dab7408ddb2896a72e29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.0

2 release files

This release

0.17.0 This release

2 release files

0.15.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page