Module: SignalWire

Defined in:
lib/signalwire/runtime.rb,
lib/signalwire.rb,
lib/signalwire/logging.rb,
lib/signalwire/version.rb,
lib/signalwire/relay/call.rb,
lib/signalwire/pom/section.rb,
lib/signalwire/swml/schema.rb,
lib/signalwire/relay/action.rb,
lib/signalwire/relay/client.rb,
lib/signalwire/swml/service.rb,
lib/signalwire/relay/message.rb,
lib/signalwire/swml/document.rb,
lib/signalwire/prefabs/survey.rb,
lib/signalwire/prefabs/faq_bot.rb,
lib/signalwire/relay/constants.rb,
lib/signalwire/rest/pagination.rb,
lib/signalwire/agent/agent_base.rb,
lib/signalwire/datamap/data_map.rb,
lib/signalwire/rest/http_client.rb,
lib/signalwire/rest/rest_client.rb,
lib/signalwire/utils/serverless.rb,
lib/signalwire/prefabs/concierge.rb,
lib/signalwire/relay/relay_event.rb,
lib/signalwire/skills/skill_base.rb,
lib/signalwire/utils/schema_utils.rb,
lib/signalwire/core/logging_config.rb,
lib/signalwire/rest/namespaces/mfa.rb,
lib/signalwire/server/agent_server.rb,
lib/signalwire/skills/builtin/joke.rb,
lib/signalwire/skills/builtin/math.rb,
lib/signalwire/utils/url_validator.rb,
lib/signalwire/prefabs/receptionist.rb,
lib/signalwire/rest/namespaces/chat.rb,
lib/signalwire/rest/namespaces/logs.rb,
lib/signalwire/skills/skill_manager.rb,
lib/signalwire/prefabs/info_gatherer.rb,
lib/signalwire/rest/namespaces/video.rb,
lib/signalwire/skills/builtin/spider.rb,
lib/signalwire/skills/skill_registry.rb,
lib/signalwire/swaig/function_result.rb,
lib/signalwire/rest/namespaces/compat.rb,
lib/signalwire/rest/namespaces/fabric.rb,
lib/signalwire/rest/namespaces/lookup.rb,
lib/signalwire/rest/namespaces/pubsub.rb,
lib/signalwire/rest/namespaces/queues.rb,
lib/signalwire/pom/prompt_object_model.rb,
lib/signalwire/rest/namespaces/calling.rb,
lib/signalwire/rest/namespaces/project.rb,
lib/signalwire/rest/phone_call_handler.rb,
lib/signalwire/skills/builtin/datetime.rb,
lib/signalwire/contexts/context_builder.rb,
lib/signalwire/rest/namespaces/registry.rb,
lib/signalwire/security/session_manager.rb,
lib/signalwire/rest/namespaces/addresses.rb,
lib/signalwire/serverless/lambda_handler.rb,
lib/signalwire/skills/builtin/datasphere.rb,
lib/signalwire/skills/builtin/web_search.rb,
lib/signalwire/rest/namespaces/datasphere.rb,
lib/signalwire/rest/namespaces/recordings.rb,
lib/signalwire/security/webhook_validator.rb,
lib/signalwire/skills/builtin/google_maps.rb,
lib/signalwire/skills/builtin/mcp_gateway.rb,
lib/signalwire/skills/builtin/weather_api.rb,
lib/signalwire/rest/namespaces/short_codes.rb,
lib/signalwire/rest/namespaces/sip_profile.rb,
lib/signalwire/security/webhook_middleware.rb,
lib/signalwire/skills/builtin/claude_skills.rb,
lib/signalwire/skills/builtin/custom_skills.rb,
lib/signalwire/skills/builtin/info_gatherer.rb,
lib/signalwire/skills/builtin/swml_transfer.rb,
lib/signalwire/rest/namespaces/number_groups.rb,
lib/signalwire/rest/namespaces/phone_numbers.rb,
lib/signalwire/skills/builtin/wikipedia_search.rb,
lib/signalwire/rest/namespaces/imported_numbers.rb,
lib/signalwire/rest/namespaces/verified_callers.rb,
lib/signalwire/skills/builtin/api_ninjas_trivia.rb,
lib/signalwire/skills/builtin/native_vector_search.rb,
lib/signalwire/skills/builtin/play_background_file.rb,
lib/signalwire/skills/builtin/datasphere_serverless.rb

Overview

Copyright © 2025 SignalWire

Licensed under the MIT License. See LICENSE file in the project root for full license information.

Defined Under Namespace

Modules: Contexts, Core, Logging, POM, Prefabs, REST, Relay, Runtime, SWML, Security, Serverless, Skills, Swaig, Utils Classes: AgentBase, AgentServer, DataMap

Constant Summary collapse

VERSION =
'2.0.0'

Class Method Summary collapse

Class Method Details

.add_skill_directory(path) ⇒ void

This method returns an undefined value.

Add a directory to search for skills.

Mirrors Python’s “signalwire.add_skill_directory(path)“ — delegates to the singleton SignalWire::Skills::SkillRegistry instance so third-party skill collections can be registered by path. Subsequent calls accumulate (de-duplicated) into a shared external paths list.

Parameters:

  • path (String)

    absolute or relative path to a skill directory.

Raises:

  • (ArgumentError)

    when the path doesn’t exist or isn’t a directory.



83
84
85
86
# File 'lib/signalwire.rb', line 83

def add_skill_directory(path)
  require_relative 'signalwire/skills/skill_registry'
  _signalwire_singleton_registry.add_skill_directory(path)
end

.list_skills_with_paramsHash{String => Hash}

Get complete schema for all available skills, including parameter metadata.

Mirrors Python’s “signalwire.list_skills_with_params()“. Keys are skill names; values describe metadata + parameter schema. Useful for GUI configuration tools, API documentation, or programmatic skill discovery.

Returns:

  • (Hash{String => Hash})


96
97
98
99
100
101
102
103
104
105
106
# File 'lib/signalwire.rb', line 96

def list_skills_with_params
  require_relative 'signalwire/skills/skill_registry'
  if Skills::SkillRegistry.respond_to?(:get_all_skills_schema)
    Skills::SkillRegistry.get_all_skills_schema
  else
    # Fallback: list_skills returns names; pair them with empty params.
    Skills::SkillRegistry.list_skills.each_with_object({}) do |name, h|
      h[name] = { 'name' => name, 'parameters' => {} }
    end
  end
end

.register_skill(skill_class) ⇒ void

This method returns an undefined value.

Register a custom skill class with the global skill registry.

Mirrors Python’s “signalwire.register_skill(skill_class)“ — the Ruby singleton registry stores factories by name. The class is expected to expose a “::skill_name“ (or “SKILL_NAME“ constant) so we can derive the registration key.

Parameters:



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/signalwire.rb', line 60

def register_skill(skill_class)
  require_relative 'signalwire/skills/skill_registry'
  name = if skill_class.respond_to?(:skill_name)
           skill_class.skill_name
         elsif skill_class.const_defined?(:SKILL_NAME)
           skill_class.const_get(:SKILL_NAME)
         else
           raise ArgumentError,
                 "skill class #{skill_class} must define ::skill_name or SKILL_NAME"
         end
  Skills::SkillRegistry.register_skill(name, ->(params) { skill_class.new(params) })
end

.RestClient(*args, **kwargs) ⇒ SignalWire::REST::RestClient

Construct a SignalWire::REST::RestClient instance.

Mirrors Python’s top-level “signalwire.RestClient(*args, **kwargs)“ factory — a thin wrapper that lazy-imports “signalwire.rest.RestClient“ and instantiates it. Supports both positional credentials (matching Go-style “RestClient(project, token, host)“) and keyword credentials (Ruby-idiomatic).

Parameters:

  • args (Array<String>)

    Positional credentials (compat shim).

  • kwargs (Hash)

    Keyword credentials forwarded to the constructor.

Returns:



40
41
42
43
44
45
46
47
48
49
# File 'lib/signalwire.rb', line 40

def RestClient(*args, **kwargs)
  require_relative 'signalwire/rest/rest_client'
  if args.length >= 3 && kwargs.empty?
    REST::RestClient.new(project: args[0], token: args[1], host: args[2])
  elsif !args.empty? && kwargs.empty?
    raise ArgumentError, 'positional form requires (project, token, host)'
  else
    REST::RestClient.new(**kwargs)
  end
end