Migrating to SignalWire SDK 2.0

Distribution Rename

# Before
cpanm SignalWire::Agents

# After
cpanm SignalWire

Use Statement Changes

# Before
use SignalWire::Agents::AgentBase;
use SignalWire::Agents::Core::FunctionResult;
use SignalWire::Agents::Rest::SignalWireClient;
use SignalWire::Agents::Skills::DateTime;

my $agent  = SignalWire::Agents::AgentBase->new();
my $client = SignalWire::Agents::Rest::SignalWireClient->new(
    project_id => $project_id,
    token      => $token,
    space_url  => $space_url,
);

# After
use SignalWire::AgentBase;
use SignalWire::Core::FunctionResult;
use SignalWire::Rest::RestClient;
use SignalWire::Skills::DateTime;

my $agent  = SignalWire::AgentBase->new();
my $client = SignalWire::Rest::RestClient->new(
    project_id => $project_id,
    token      => $token,
    space_url  => $space_url,
);

Class Renames

| Before | After | |--------|-------| | SignalWire::Agents::AgentBase | SignalWire::AgentBase | | SignalWire::Agents::Rest::SignalWireClient | SignalWire::Rest::RestClient | | SignalWire::Agents::* (all packages) | SignalWire::* |

Quick Migration

Find and replace in your project:

# Flatten namespace (remove ::Agents level)
find . -name '*.pl' -o -name '*.pm' | xargs sed -i 's/SignalWire::Agents::/SignalWire::/g'

# Rename client class
find . -name '*.pl' -o -name '*.pm' | xargs sed -i 's/SignalWireClient/RestClient/g'

# Update use statements for the distribution itself
find . -name '*.pl' -o -name '*.pm' | xargs sed -i 's/use SignalWire::Agents;/use SignalWire;/g'

What Didn't Change