الدليل ← Skill
SkilloptionalHermes Optional Skills

Telephony

Telephony: مهارة ينشرها Nous Research. مجالها التصميم والوسائط. يوفّر السجل أمر تثبيت جاهزًا يظهر في هذه الصفحة. الرخصة MIT. الإصدار الموثّق 1.0.0. تُفعَّل بأمر `hermes skills install telephony` بعد مراجعة ما تطلبه. تدعم: linux، macos، windows.

telephonyphonesmsmmsvoicetwiliobland.aivapi
آخر تحقق من السجل2026-08-18v1.0.0Nous Research
افتح المصدر الأصلي ↗Read in English
المعنى ببساطة

ماذا يضيف إلى Hermes؟

Telephony: مهارة ينشرها Nous Research. مجالها التصميم والوسائط. يوفّر السجل أمر تثبيت جاهزًا يظهر في هذه الصفحة. الرخصة MIT. الإصدار الموثّق 1.0.0. تُفعَّل بأمر hermes skills install telephony بعد مراجعة ما تطلبه. تدعم: linux، macos، windows.

Telephony هي مهارة مرتبطة بمجال التصميم والوسائط. يضيف أدوات لإنشاء أو قراءة أو تعديل وسائط مثل التصميم والصورة والصوت والفيديو.

هذا تفسير مبسّط مبني على وصف الناشر. أبقينا الوصف الإنجليزي بجانبه حتى تستطيع مقارنة المعنى بالمصدر.

استخدمه عندما

استخدمه عندما يكون هدفك واضحًا في التصميم والوسائط وتستطيع تحديد البيانات والأفعال التي يحتاجها فقط.

لا تحتاجه عندما

لا تضفه لمجرد التجربة إذا كان لديك طريق أبسط داخل Hermes، أو إذا لم تستطع مراجعة المصدر والصلاحيات.

لمن يناسب؟

مناسب لمن يريد طريقة عمل قابلة للتكرار داخل Hermes.

أول اختبار آمن

ابدأ بأصل تجريبي، واطلب نسخة جديدة بدل تعديل الملف الأصلي حتى تتأكد من النتيجة.

الوصف الأصلي من الناشر، من دون ترجمة تغيّر المعنى

Provision Twilio numbers, SMS/MMS, and AI outbound calls

✓
مصدر البيانات

فُهرس هذا الإدخال من Hermes Optional Skills. الشرح العربي يفسّر النوع والمجال ولا يضيف وظيفة غير مذكورة في المصدر.

!
مراجعة الأمان

المصدر رسمي أو خضع لمراجعة تحريرية، لكن ذلك لا يغني عن مراجعة الصلاحيات والإصدار.

مسار تثبيت آمن

افحص، ثبّت، ثم اختبر.

  1. 01
    افتح المصدر

    طابق اسم الناشر والرخصة والوصف مع حاجتك، وراجع آخر تحديث فعلي.

  2. 02
    راجع الصلاحيات والأسرار

    لا تلصق قيمة سر داخل الموقع. استخدم أسماء متغيرات البيئة وامنح أقل نطاق ممكن.

  3. 03
    انسخ الإعداد فقط بعد المراجعة

    الأزرار أدناه تنسخ نصًا إلى الحافظة ولا تشغّل أمرًا على جهازك.

  4. 04
    اختبر بمهمة غير حساسة

    تحقق من الأدوات الظاهرة، ثم استبعد أدوات الكتابة أو الحذف التي لا تحتاجها.

أمر التثبيت

راجع الأمر ثم انسخه.

hermes skills install telephony

لا ينفّذ Hermes بالعربي هذا الأمر. التثبيت يحدث داخل جهازك ويظل خاضعًا لفحص Hermes ومراجعتك.

تعريف المهارة كاملًا

ما الذي يحمّله Hermes بالضبط عند تشغيل هذه المهارة.

منقول من التوثيق الرسمي. اقرأه قبل تفعيل المهارة، فهذا النص يصبح تعليمات الوكيل نفسه.

Provision Twilio numbers, SMS/MMS, and AI outbound calls.

Skill metadata

جدول مرجعي. لا تقرأه كله، ابحث عن السطر الذي يخصّك فقط.

SourceOptional — install with hermes skills install official/productivity/telephony
Pathoptional-skills/productivity/telephony
Version1.0.0
AuthorNous Research
LicenseMIT
Platformslinux, macos, windows
Tagstelephony, phone, sms, mms, voice, twilio, bland.ai, vapi, calling, texting
Related skillsmaps, google-workspace, agentmail

Reference: full SKILL.md

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

This optional skill gives Hermes practical phone capabilities while keeping telephony out of the core tool list.

It ships with a helper script, scripts/telephony.py, that can:

  • save provider credentials into ${HERMES_HOME:-~/.hermes}/.env
  • search for and buy a Twilio phone number
  • remember that owned number for later sessions
  • send SMS / MMS from the owned number
  • poll inbound SMS for that number with no webhook server required
  • make direct Twilio calls using TwiML <Say> or <Play>
  • import the owned Twilio number into Vapi
  • place outbound AI calls through Bland.ai or Vapi

What this solves

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

This skill is meant to cover the practical phone tasks users actually want:

  • outbound calls
  • texting
  • owning a reusable agent number
  • checking messages that arrive to that number later
  • preserving that number and related IDs between sessions
  • future-friendly telephony identity for inbound SMS polling and other automations

It does not turn Hermes into a real-time inbound phone gateway. Inbound SMS is handled by polling the Twilio REST API. That is enough for many workflows, including notifications and some one-time-code retrieval, without adding core webhook infrastructure.

Safety rules — mandatory

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

  1. Always confirm before placing a call or sending a text.
  2. Never dial emergency numbers.
  3. Never use telephony for harassment, spam, impersonation, or anything illegal.
  4. Treat third-party phone numbers as sensitive operational data:
  5. do not save them to Hermes memory
  6. do not include them in skill docs, summaries, or follow-up notes unless the user explicitly wants that
  7. It is fine to persist the agent-owned Twilio number because that is part of the user's configuration.
  8. VoIP numbers are not guaranteed to work for all third-party 2FA flows. Use with caution and set user expectations clearly.

Decision tree — which service to use?

إعدادات تضبطها مرة وتنساها. غيّر واحدًا في كل مرة حتى تعرف أثر كل تغيير. تضبط VAPI_PHONE_NUMBER_ID خارج المحادثة، في بيئة التشغيل.

Use this logic instead of hardcoded provider routing:

1) "I want Hermes to own a real phone number"

Use Twilio.

Why:

  • easiest path to buying and keeping a number
  • best SMS / MMS support
  • simplest inbound SMS polling story
  • cleanest future path to inbound webhooks or call handling

Use cases:

  • receive texts later
  • send deployment alerts / cron notifications
  • maintain a reusable phone identity for the agent
  • experiment with phone-based auth flows later

2) "I only need the easiest outbound AI phone call right now"

Use Bland.ai.

Why:

  • quickest setup
  • one API key
  • no need to first buy/import a number yourself

Tradeoff:

  • less flexible
  • voice quality is decent, but not the best

3) "I want the best conversational AI voice quality"

Use Twilio + Vapi.

Why:

  • Twilio gives you the owned number
  • Vapi gives you better conversational AI call quality and more voice/model flexibility

Recommended flow:

  1. Buy/save a Twilio number
  2. Import it into Vapi
  3. Save the returned VAPI_PHONE_NUMBER_ID
  4. Use ai-call --provider vapi

4) "I want to call with a custom prerecorded voice message"

Use Twilio direct call with a public audio URL.

Why:

  • easiest way to play a custom MP3
  • pairs well with Hermes text_to_speech plus a public file host or tunnel

Files and persistent state

إعدادات تضبطها مرة وتنساها. غيّر واحدًا في كل مرة حتى تعرف أثر كل تغيير. تضبط TWILIO_ACCOUNT_SID، TWILIO_AUTH_TOKEN خارج المحادثة، في بيئة التشغيل.

The skill persists telephony state in two places:

${HERMESHOME:-~/.hermes}/.env

Used for long-lived provider credentials and owned-number IDs, for example:

  • TWILIO_ACCOUNT_SID
  • TWILIO_AUTH_TOKEN
  • TWILIO_PHONE_NUMBER
  • TWILIO_PHONE_NUMBER_SID
  • BLAND_API_KEY
  • VAPI_API_KEY
  • VAPI_PHONE_NUMBER_ID
  • PHONE_PROVIDER (AI call provider: bland or vapi)

~/.hermes/telephonystate.json

Used for skill-only state that should survive across sessions, for example:

  • remembered default Twilio number / SID
  • remembered Vapi phone number ID
  • last inbound message SID/date for inbox polling checkpoints

This means:

  • the next time the skill is loaded, diagnose can tell you what number is already configured
  • twilio-inbox --since-last --mark-seen can continue from the previous checkpoint

Locate the helper script

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

After installing this skill, locate the script like this:

Shellسطر واحد
SCRIPT="$(find ~/.hermes/skills -path '*/telephony/scripts/telephony.py' -print -quit)"

If SCRIPT is empty, the skill is not installed yet.

Install

خطوات عملية بالترتيب. نفّذ خطوة وتأكد أنها نجحت قبل الانتقال للتالية.

This is an official optional skill, so install it from the Skills Hub:

Shellسطران
hermes skills search telephony
hermes skills install official/productivity/telephony

Provider setup

خطوات عملية بالترتيب. نفّذ خطوة وتأكد أنها نجحت قبل الانتقال للتالية.

Twilio — owned number, SMS/MMS, direct calls, inbound SMS polling

Sign up at:

  • https://www.twilio.com/try-twilio

Then save credentials into Hermes:

Shellسطر واحد
python3 "$SCRIPT" save-twilio ACXXXXXXXXXXXXXXXXXXXXXXXXXXXX your_auth_token_here

Search for available numbers:

Shellسطر واحد
python3 "$SCRIPT" twilio-search --country US --area-code 702 --limit 5

Buy and remember a number:

Shellسطر واحد
python3 "$SCRIPT" twilio-buy "+17025551234" --save-env

List owned numbers:

Shellسطر واحد
python3 "$SCRIPT" twilio-owned

Set one of them as the default later:

Shell3 أسطر
python3 "$SCRIPT" twilio-set-default "+17025551234" --save-env
# or
python3 "$SCRIPT" twilio-set-default PNXXXXXXXXXXXXXXXXXXXXXXXXXXXX --save-env

Bland.ai — easiest outbound AI calling

Sign up at:

  • https://app.bland.ai

Save config:

Shellسطر واحد
python3 "$SCRIPT" save-bland your_bland_api_key --voice mason

Vapi — better conversational voice quality

Sign up at:

  • https://dashboard.vapi.ai

Save the API key first:

Shellسطر واحد
python3 "$SCRIPT" save-vapi your_vapi_api_key

Import your owned Twilio number into Vapi and persist the returned phone number ID:

Shellسطر واحد
python3 "$SCRIPT" vapi-import-twilio --save-env

If you already know the Vapi phone number ID, save it directly:

Shellسطر واحد
python3 "$SCRIPT" save-vapi your_vapi_api_key --phone-number-id vapi_phone_number_id_here

Diagnose current state

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

At any time, inspect what the skill already knows:

Shellسطر واحد
python3 "$SCRIPT" diagnose

Use this first when resuming work in a later session.

Common workflows

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

A. Buy an agent number and keep using it later

  1. Save Twilio credentials:
Shellسطر واحد
python3 "$SCRIPT" save-twilio AC... auth_token_here
  1. Search for a number:
Shellسطر واحد
python3 "$SCRIPT" twilio-search --country US --area-code 702 --limit 10
  1. Buy it and save it into ${HERMES_HOME:-~/.hermes}/.env + state:
Shellسطر واحد
python3 "$SCRIPT" twilio-buy "+17025551234" --save-env
  1. Next session, run:
Shellسطر واحد
python3 "$SCRIPT" diagnose

This shows the remembered default number and inbox checkpoint state.

B. Send a text from the agent number

Shellسطر واحد
python3 "$SCRIPT" twilio-send-sms "+15551230000" "Your deployment completed successfully."

With media:

Shellسطر واحد
python3 "$SCRIPT" twilio-send-sms "+15551230000" "Here is the chart." --media-url "https://example.com/chart.png"

C. Check inbound texts later with no webhook server

Poll the inbox for the default Twilio number:

Shellسطر واحد
python3 "$SCRIPT" twilio-inbox --limit 20

Only show messages that arrived after the last checkpoint, and advance the checkpoint when you're done reading:

Shellسطر واحد
python3 "$SCRIPT" twilio-inbox --since-last --mark-seen

This is the main answer to “how do I access messages the number receives next time the skill is loaded?”

D. Make a direct Twilio call with built-in TTS

Shellسطر واحد
python3 "$SCRIPT" twilio-call "+15551230000" --message "Hello! This is Hermes calling with your status update." --voice Polly.Joanna

E. Call with a prerecorded / custom voice message

This is the main path for reusing Hermes's existing text_to_speech support.

Use this when:

  • you want the call to use Hermes's configured TTS voice rather than Twilio <Say>
  • you want a one-way voice delivery (briefing, alert, joke, reminder, status update)
  • you do not need a live conversational phone call

Generate or host audio separately, then:

Shellسطر واحد
python3 "$SCRIPT" twilio-call "+155****0000" --audio-url "https://example.com/briefing.mp3"

Recommended Hermes TTS -> Twilio Play workflow:

  1. Generate the audio with Hermes text_to_speech.
  2. Make the resulting MP3 publicly reachable.
  3. Place the Twilio call with --audio-url.

Example agent flow:

  • Ask Hermes to create the message audio with text_to_speech
  • If needed, expose the file with a temporary static host / tunnel / object storage URL
  • Use twilio-call --audio-url ... to deliver it by phone

Good hosting options for the MP3:

  • a temporary public object/storage URL
  • a short-lived tunnel to a local static file server
  • any existing HTTPS URL the phone provider can fetch directly

Important note:

  • Hermes TTS is great for prerecorded outbound messages
  • Bland/Vapi are better for live conversational AI calls because they handle the real-time telephony audio stack themselves
  • Hermes STT/TTS alone is not being used here as a full duplex phone conversation engine; that would require a much heavier streaming/webhook integration than this skill is trying to introduce

F. Navigate a phone tree / IVR with Twilio direct calling

If you need to press digits after the call connects, use --send-digits. Twilio interprets w as a short wait.

Shellسطر واحد
python3 "$SCRIPT" twilio-call "+18005551234" --message "Connecting to billing now." --send-digits "ww1w2w3"

This is useful for reaching a specific menu branch before handing off to a human or delivering a short status message.

G. Outbound AI phone call with Bland.ai

Shellسطر واحد
python3 "$SCRIPT" ai-call "+15551230000" "Call the dental office, ask for a cleaning appointment on Tuesday afternoon, and if they do not have Tuesday availability, ask for Wednesday or Thursday instead." --provider bland --voice mason --max-duration 3

Check status:

Shellسطر واحد
python3 "$SCRIPT" ai-status <call_id> --provider bland

Ask Bland analysis questions after completion:

Shellسطر واحد
python3 "$SCRIPT" ai-status <call_id> --provider bland --analyze "Was the appointment confirmed?,What date and time?,Any special instructions?"

H. Outbound AI phone call with Vapi on your owned number

  1. Import your Twilio number into Vapi:
Shellسطر واحد
python3 "$SCRIPT" vapi-import-twilio --save-env
  1. Place the call:
Shellسطر واحد
python3 "$SCRIPT" ai-call "+15551230000" "You are calling to make a dinner reservation for two at 7:30 PM. If that is unavailable, ask for the nearest time between 6:30 and 8:30 PM." --provider vapi --max-duration 4
  1. Check result:
Shellسطر واحد
python3 "$SCRIPT" ai-status <call_id> --provider vapi

Suggested agent procedure

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

When the user asks for a call or text:

  1. Determine which path fits the request via the decision tree.
  2. Run diagnose if configuration state is unclear.
  3. Gather the full task details.
  4. Confirm with the user before dialing or texting.
  5. Use the correct command.
  6. Poll for results if needed.
  7. Summarize the outcome without persisting third-party numbers to Hermes memory.

What this skill still does not do

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

  • real-time inbound call answering
  • webhook-based live SMS push into the agent loop
  • guaranteed support for arbitrary third-party 2FA providers

Those would require more infrastructure than a pure optional skill.

Pitfalls

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

  • Twilio trial accounts and regional rules can restrict who you can call/text.
  • Some services reject VoIP numbers for 2FA.
  • twilio-inbox polls the REST API; it is not instant push delivery.
  • Vapi outbound calling still depends on having a valid imported number.
  • Bland is easiest, but not always the best-sounding.
  • Do not store arbitrary third-party phone numbers in Hermes memory.

Verification checklist

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

After setup, you should be able to do all of the following with just this skill:

  1. diagnose shows provider readiness and remembered state
  2. search and buy a Twilio number
  3. persist that number to ${HERMES_HOME:-~/.hermes}/.env
  4. send an SMS from the owned number
  5. poll inbound texts for the owned number later
  6. place a direct Twilio call
  7. place an AI call via Bland or Vapi

References

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

  • Twilio phone numbers: https://www.twilio.com/docs/phone-numbers/api
  • Twilio messaging: https://www.twilio.com/docs/messaging/api/message-resource
  • Twilio voice: https://www.twilio.com/docs/voice/api/call-resource
  • Vapi docs: https://docs.vapi.ai/
  • Bland.ai: https://app.bland.ai/