mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-10 08:05:22 +02:00
86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
"""ARI (Asterisk REST Interface) telephony provider package."""
|
|
|
|
from typing import Any, Dict
|
|
|
|
from api.services.telephony.registry import (
|
|
ProviderSpec,
|
|
ProviderUIField,
|
|
ProviderUIMetadata,
|
|
register,
|
|
)
|
|
|
|
from .config import ARIConfigurationRequest, ARIConfigurationResponse
|
|
from .provider import ARIProvider
|
|
from .transport import create_transport
|
|
|
|
|
|
def _config_loader(value: Dict[str, Any]) -> Dict[str, Any]:
|
|
return {
|
|
"provider": "ari",
|
|
"ari_endpoint": value.get("ari_endpoint"),
|
|
"app_name": value.get("app_name"),
|
|
"app_password": value.get("app_password"),
|
|
"from_numbers": value.get("from_numbers", []),
|
|
}
|
|
|
|
|
|
_UI_METADATA = ProviderUIMetadata(
|
|
display_name="Asterisk ARI",
|
|
docs_url="https://docs.dograh.com/integrations/telephony/asterisk-ari",
|
|
fields=[
|
|
ProviderUIField(
|
|
name="ari_endpoint",
|
|
label="ARI Endpoint",
|
|
type="text",
|
|
description="ARI base URL (e.g., http://asterisk.example.com:8088)",
|
|
),
|
|
ProviderUIField(
|
|
name="app_name",
|
|
label="Stasis App Name",
|
|
type="text",
|
|
description="Stasis application name registered in Asterisk",
|
|
),
|
|
ProviderUIField(
|
|
name="app_password",
|
|
label="ARI Password",
|
|
type="password",
|
|
sensitive=True,
|
|
),
|
|
ProviderUIField(
|
|
name="ws_client_name",
|
|
label="websocket_client.conf Name",
|
|
type="text",
|
|
description="websocket_client.conf connection name for externalMedia",
|
|
),
|
|
ProviderUIField(
|
|
name="from_numbers",
|
|
label="From Extensions",
|
|
type="string-array",
|
|
description="SIP extensions/numbers for outbound calls",
|
|
),
|
|
],
|
|
)
|
|
|
|
|
|
SPEC = ProviderSpec(
|
|
name="ari",
|
|
provider_cls=ARIProvider,
|
|
config_loader=_config_loader,
|
|
transport_factory=create_transport,
|
|
transport_sample_rate=8000,
|
|
config_request_cls=ARIConfigurationRequest,
|
|
ui_metadata=_UI_METADATA,
|
|
config_response_cls=ARIConfigurationResponse,
|
|
)
|
|
|
|
|
|
register(SPEC)
|
|
|
|
|
|
__all__ = [
|
|
"SPEC",
|
|
"ARIConfigurationRequest",
|
|
"ARIConfigurationResponse",
|
|
"ARIProvider",
|
|
"create_transport",
|
|
]
|