Preface

The philosophy of DSH is “everything is a plugin”; the community directory is an independent site, not an official app store. dsh-plugin-call-me is a DSH plugin designed for telephone outreach. It transforms the handling of “user away from keyboard” from a simple notification to a phone call: the agent dials a 10-digit number via /call-me, the issue is read aloud, and your verbal response is transcribed and sent back to the current running instance.

This plugin is described below in terms of capabilities, installation, configuration, and important notes.

What This Is

The repository path for dsh-plugin-call-me is radres/dsh-plugin-call-me, licensed under MIT, with package.json requirements:

node >=20
dsh >=0.0.1

It runs as a standard Cordis plugin without patching the core.

The target scenario for this plugin is: the DSH instance is still running, but the operator has left the terminal and needs to continue approving, correcting, or adding a response. It dials the iPhone via the /call-me service, the conversation is transcribed in real time, and it is claimed that no data is stored; the agent only dials the 10-digit /call-me number and does not know the real phone number.

Core Features

Proactive Tools

call_me and text_me are two tools that the model can invoke.

  • call_me: Dials a phone call, reads a question aloud, waits, and returns a transcribed voice answer, blocking for up to 5 minutes.
  • text_me: Sends a one-way text message, returns immediately, and indicates whether the phone actually displays it.

End-of-Turn Reachability

After a run stops, a text message or phone call can be sent based on configuration, and the response is sent back to the run.

Common configuration includes:

  • turnEnd.mode: call: After the run stops, reach the user via phone call.
  • turnEnd.graceSeconds: How long to wait after the run stops before reaching out.

Phone Approval

When a tool is awaiting authorization, decisions can be made via text message or voice call.

When configured as approval.mode: answer:

  • A clear verbal affirmation is treated as approval;
  • Otherwise, it is rejected;
  • Phone approval only accepts an explicit “yes”; everything else is rejected;
  • This mode holds the desktop prompt until the phone is answered.

Mobile Replies Enter the Session

Replies sent from the mobile device can enter the corresponding run:

  • An idle run can be woken up by agent.followup();
  • If busy, it can be injected at the next step via agent.inject().

Installation and Activation

First, ensure the local machine meets the requirements node >=20 and dsh >=0.0.1, then add the plugin:

dsh plugin --profile web add github:radres/dsh-plugin-call-me

It is Plain JavaScript with no build steps; the git installation does not require allowBuilds permissions.

Then pair with the iPhone:

  1. Obtain the /call-me iPhone app.
  2. Open the app to view the 10-digit number.
  3. Configure config.number in the profile’s cordis.patch.yml.

Minimal configuration example:

- insert:
    - id: call-me
      name: dsh-plugin-call-me
      config:
        number: '5551234567'

All paths will resolve the number first; installation remains invalid if the number is not paired.

You can test the phone link before installation:

curl -sS https://serdaroztetik.com/aiphone/ring \
  -H 'content-type: application/json' \
  -d '{"to":"<YOUR_10_DIGITS>","text":"Can you hear me?","from":"dsh"}'

This step requests the /call-me service to dial the 10-digit number you see in the app and read aloud the contents of the text field.

Typical Usage

If you want the run to make a phone call directly after stopping and use voice for approval, you can write the following in cordis.patch.yml:

- insert:
    - id: call-me
      name: dsh-plugin-call-me
      config:
        number: '5551234567'
        turnEnd:
          mode: call
          graceSeconds: 60
        approval:
          mode: answer

With the above configuration:

  • turnEnd.mode: call indicates that after the run stops, the user is reached via phone;
  • turnEnd.graceSeconds: 60 indicates waiting 60 seconds after stopping;
  • approval.mode: answer indicates that when a tool is awaiting authorization, decisions are made via voice, with only an explicit “yes” resulting in approval.

Use Cases and Considerations

Suitable for scenarios like:

  • The run has stopped, the user is away from the keyboard, but still wishes to continue the run with a brief sentence.
  • When a tool requires authorization, you want to quickly approve or reject it from near your phone.
  • You just want to add a brief reply from the mobile device and send it back to the corresponding DSH session.

Important notes:

  • Only supports iPhone; there is no Android app.
  • There is no self-hosted deployment.
  • Voice answers are transcribed text; the approval path only accepts an explicit “yes”; everything else is rejected.
  • approval.mode: answer will hold the desktop prompt until the phone is answered.
  • The plugin runs with the permissions of the current dsh process; review the source code and MIT license before installation.

Links

  • Community directory page: https://www.skillhub.cn/plugins/radres/dsh-plugin-call-me
  • GitHub: https://github.com/radres/dsh-plugin-call-me