Skip to content

OpenAI: choose incoming or GPT-Live outbound, follow DIDWW's OpenAI guide (didww-to-openai-realtime 1.2.0, didww-connect 1.0.4) - #9

Draft
MinReq wants to merge 8 commits into
didww:mainfrom
MinReq:fix/didww-connect-openai-gptlive
Draft

MinReq wants to merge 8 commits into
didww:mainfrom
MinReq:fix/didww-connect-openai-gptlive

Conversation

@MinReq

@MinReq MinReq commented Nov 5, 2026

Copy link
Copy Markdown

Merge #6 and #8 first. This branch is built on both of them. All three PRs edit the same lines in skills/didww-connect/SKILL.md, CHANGELOG.md, the didww-connect version and the generated .well-known/agent-skills files. Until #6 and #8 are merged, this diff also shows their changes. After they land, I will merge main into this branch and regenerate the index, so only the OpenAI changes remain.

Why

DIDWW now has an OpenAI integration guide, and real test calls (2026-11-03 to 2026-11-05) showed the skills were wrong or incomplete:

  • Outbound calls are possible. The skill said OpenAI's SIP interface has no outbound calls, but GPT-Live places them through a DIDWW outbound trunk.
  • Incoming calls were rejected. DIDWW sends the called number in Diversion, and To holds the project ID. The backend's To-only match rejected every DIDWW call.
  • Silence after accepting. Accepting a call alone left the agent silent.
  • Transfers failed. They need a sip: target (tel: gets 603) and the outbound trunk's credentials on the inbound trunk.
  • GPT-Live went silent mid-call. With client delegation, an unanswered session.delegation.created left the agent silent.
  • Wrong hub advice. didww-connect said "OpenAI and xAI: no outbound trunk needed".

Changes

didww-to-openai-realtime 1.2.0

  • Setup choice first. SKILL.md asks first which setup the user wants: incoming calls, incoming calls with a transfer, GPT-Live outbound calls, or both. Each option has its own steps from DIDWW's guide.
  • Credentials: they never go through the chat. The skill creates a private mode-600 file the user fills in.
  • Live test results: a new section 7 lists every result, and says what was not tested.
  • New scripts/gptlive_call.py:
    • one POST /v1/live/sessions per run, with the outbound trunk's digest credentials, never retried;
    • attaches to the sideband immediately and logs ringing, answer or failure (with DIDWW's SIP response) and the transcript;
    • answers every delegated task, so the agent doesn't go silent;
    • hangs up at a time limit, on Ctrl-C, or when it cannot attach;
    • --check validates everything without placing a call, and --init-env creates the credentials file.
  • scripts/webhook_server.py:
    • reads the called number from Diversion;
    • greets the caller with tool_choice: "none";
    • uses a stricter transfer tool description and logs refer errors;
    • answers non-POST requests with 405 and supports --env-file;
    • refuses to start with tel: targets or targets that loop back to a served DID.
  • Tests: new tests/test_gptlive_call.py (24 checks). tests/test_webhook.py (32 checks) now covers the Diversion match, the greeting, the sip: refer target and the start-up refusals.
  • Docs: docs/didww-to-openai-realtime.md, the skill README and the family tables are updated. The docs-team note in docs/README.md no longer says the OpenAI page is inbound-only.
  • Name: titles and tables now show the skill as OpenAI (Realtime and GPT-Live). The identifier didww-to-openai-realtime stays unchanged: npm package, folder, install commands, page file name and index entry. Existing installs, links and the website mirror keep working.

didww-connect 1.0.4

  • OpenAI ingress notes: the called number arrives in Diversion, transfers use a sip: REFER target, and GPT-Live dials sips:{DIDWW outbound host}:5061.

  • OpenAI allowed IPs:

    • transfers need DIDWW's seven signaling IPs;
    • GPT-Live also needs OpenAI's 13.79.45.80/28, 23.98.140.64/28, 40.67.149.176/28 and 40.83.204.240/28;
    • both need SRTP SDES.

    xAI is unchanged.

  • references/panels-and-billing.md:

    • the webhook permission;
    • the restricted key that worked;
    • outbound SIP enablement for GPT-Live;
    • DIDWW outbound billing.
  • docs/didww-connect.md: the same corrections.

Tests

  • bash scripts/test.sh passes: every skill's tests, installers 90/90, discovery index 53/53.
  • Real calls through DIDWW, which showed:
    • incoming calls answered, with the greeting 1.3 s after the accept;
    • a transfer to a mobile, showing the original caller ID, with an outbound CDR;
    • GPT-Live outbound calls answered through sips:fra.eu.out.didww.com:5061 with OpenAI's four ranges, CDR Success;
    • an outbound call where the script answered the delegation and the agent went on with its recommendation instead of going silent.

🤖 Generated with Claude Code

MinReq and others added 8 commits October 27, 2026 10:31
…MCP host, add live-agent transfers

- import_number.py accepts E.164 with or without + and imports it without,
  as the DIDWW trunk sends {DID}; new --media-encryption and --update
  (PATCH an imported number's inbound credentials).
- ElevenLabs MCP at https://api.us.elevenlabs.io/v1/mcp: the api.elevenlabs.io
  endpoint advertises that resource and Claude Code refuses to sign in.
- Transfer section per DIDWW's AI-to-Live Agent guide (SIP REFER, DIDWW
  signaling IPs on the outbound trunk, outbound pair on the inbound trunk and
  the ElevenLabs number, max_transfers, network protocol, sip_refer tool),
  plus failure-map rows.
- didww-to-elevenlabs 1.1.1, didww-connect 1.0.3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…I agent linking

- Skill and docs follow doc.didww.com/integrations/vogent/ section by
  section: inbound trunk UDP 5060 with R-URI {DID} (or +{DID}); outbound
  trunk required even for inbound-only; Allowed SIP IPs = Vogent enterprise
  ranges plus DIDWW's signaling IPs, 0.0.0.0/0 only for temporary testing;
  outbound credentials as the inbound trunk's Authorization; opening line;
  Call Transfer function; testing and troubleshooting.
- Transfers work only as Warm Transfer (Cold/REFER never reaches DIDWW);
  transfer type is set in the dashboard only.
- connect.py --agent links the number to the agent (PUT
  /api/phone_numbers/{id}); --phone-id links a number imported earlier.
- didww-connect: Vogent rows and notes follow the guide.
- didww-to-vogent 1.0.3, didww-connect 1.0.3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CHANGELOG: the Vogent entry stays above the discovery-index entry.
.well-known/agent-skills/ rebuilt with scripts/build_index.py for the
didww-connect and didww-to-vogent changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CHANGELOG: the ElevenLabs entry stays on top, re-dated 2026-11-03 so the
entries stay newest first. .well-known/agent-skills/ rebuilt with
scripts/build_index.py for the didww-connect and didww-to-elevenlabs
changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…connect changes apply together

Both PRs edit the same didww-connect allowed-IP note, footer, CHANGELOG and the
generated index; keep both texts and regenerate .well-known/agent-skills.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ive outbound calls

Follows DIDWW's OpenAI integration guide; verified on real calls.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…; follow DIDWW's OpenAI guide and live tests

Adds scripts/gptlive_call.py for outbound calls through a DIDWW outbound
trunk, fixes the incoming backend for DIDWW (Diversion, greeting, sip:
transfer targets) and records every live test result in SKILL.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ep its package name

Titles and table labels only: the npm package, folder, install commands,
page file name and index entry stay didww-to-openai-realtime so existing
installs, links and the website mirror keep working.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 5, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@sonarqubecloud

sonarqubecloud Bot commented Nov 5, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant