fixik/bandwidth

Bandwidth的Iris SDK for PHP

v2.0.8 2019-11-27 09:30 UTC

README

Build Status

发行说明

支持的PHP版本

安装

运行

composer require fixik/iris

用法

$client = new \Iris\Client($login, $password, ['url' => 'https://dashboard.bandwidth.com/api/']);

运行测试

$ composer install
$ php ./bin/phpunit --bootstrap ./vendor/autoload.php tests/

=======

示例

源代码树中有一个名为'examples'的文件夹,其中包含使用简单示例代码展示如何使用每个API对象。要运行示例

$ cd examples
$ composer install
$ cp config.php.example config.php

编辑config.php以匹配您的IRIS凭据,然后单独运行示例。例如:

php availableNumbers-sample.php

如果示例需要命令行参数,只需执行单个脚本即可获取用法。

API对象

基本原则

在大多数情况下,您应该以Account对象为起点。

$account = new \Iris\Account($your_account_id, $client);

Account具有相关的实体,如订单、站点等。

示例

$sites = $account->sites();

要获取存储的站点,应创建$sites对象并执行get()方法。

$items = $sites->getList(); // Array(Site1, Site2)

要反映对象结构

echo json_encode($site->to_array());

可用号码

$account->availableNumbers([ "areaCode" => "818" ]);

可用NpaNxx

$account->availableNpaNxx(["state" => "CA"]);

城市

$cities = new \Iris\Cities($client);
$items = $cities->getList(["state" => "NC"]);

覆盖的费率中心

$rcs = new Iris\CoveredRateCenters($client);
$rateCenters = $rcs->getList(["page" => 1, "size" => 10 ]);

断开连接的号码

$account->disnumbers(["areaCode" => "919"]);

断开号码

断开对象用于从账户中断开号码。创建一个可以跟踪的断开订单

创建断开

$disconnect = $account->disconnects()->create([
    "name" => "test disconnect order 4",
    "CustomerOrderId" => "Disconnect1234",
    "DisconnectTelephoneNumberOrderType" => [
        "TelephoneNumberList" => [
            "TelephoneNumber" => [ "9192755378", "9192755703" ]
        ]
    ]
]]);

获取断开

$disconnect = $account->disconnects()->disconnect("b902dee1-0585-4258-becd-5c7e51ccf5e1", true); // tnDetails: true

向断开添加备注

$disconnect->notes()->create([ "UserId" => "byo_dev", "Description" => "Test Note"]);

获取断开备注

$items = $disconnect->notes()->getList();

Dlda

创建Ddla

$order_data = [
    "CustomerOrderId" => "123",
    "DldaTnGroups" => [
        "DldaTnGroup" => [
            [
                "TelephoneNumbers" => [
                    "TelephoneNumber" => "4352154856"
                ],
                "AccountType" => "RESIDENTIAL",
                "ListingType" => "LISTED",
                "ListAddress" => "true",
                "ListingName" => [
                    "FirstName" => "FirstName",
                    "FirstName2" => "FirstName2",
                    "LastName" => "LastName",
                    "Designation" => "Designation",
                    "TitleOfLineage" => "TitleOfLineage",
                    "TitleOfAddress" => "TitleOfAddress",
                    "TitleOfAddress2" => "TitleOfAddress2",
                    "TitleOfLineageName2" => "TitleOfLineageName2",
                    "TitleOfAddressName2" => "TitleOfAddressName2",
                    "TitleOfAddress2Name2" => "TitleOfAddress2Name2",
                    "PlaceListingAs" => "PlaceListingAs",
                ],
                "Address" => [
                    "HousePrefix" => "HousePrefix",
                    "HouseNumber" => "915",
                    "HouseSuffix" => "HouseSuffix",
                    "PreDirectional" => "PreDirectional",
                    "StreetName" => "StreetName",
                    "StreetSuffix" => "StreetSuffix",
                    "PostDirectional" => "PostDirectional",
                    "AddressLine2" => "AddressLine2",
                    "City" => "City",
                    "StateCode" => "StateCode",
                    "Zip" => "Zip",
                    "PlusFour" => "PlusFour",
                    "Country" => "Country",
                    "AddressType" => "AddressType"
                ]
            ]
        ]
    ]
];

$dlda = $account->dldas()->create($order_data);

获取Dlda

$dlda = $account->dldas()->dlda("7802373f-4f52-4387-bdd1-c5b74833d6e2");

获取Dlda历史记录

$dlda->history();

列出Dldas

$account->dldas()->getList(["telephoneNumber" => "9195551212"]);

在服务号码

列出在服务号码

$account->inserviceNumbers(["areaCode" => "919"]);

Lidb

创建

$order_data = [
    "LidbTnGroups" => [
        "LidbTnGroup" => [
            [
                "TelephoneNumbers" => [
                    "TelephoneNumber" => "4352154856"
                ],
                "SubscriberInformation" => "Steve",
                "UseType" => "RESIDENTIAL",
                "Visibility" => "PUBLIC"
            ],
            [
                "TelephoneNumbers" => [
                    "TelephoneNumber" => "4352154855"
                ],
                "SubscriberInformation" => "Steve",
                "UseType" => "RESIDENTIAL",
                "Visibility" => "PUBLIC"
            ]
        ]
    ]
];

$lidb = $account->lidbs()->create($order_data);

获取Lidb

$lidb = $account->lidbs()->lidb("7802373f-4f52-4387-bdd1-c5b74833d6e2");

列出Lidbs

$lidbs = $account->lidbs()->getList(["lastModifiedAfter" => "mm-dd-yy", "telephoneNumber"=> "888"]);

LNP检查器

检查LNP

$account->lnpChecker(["4109255199", "9196190594"], "true");

订单

创建订单

$order = $account->orders()->create([
    "Name" => "Available Telephone Number order",
    "SiteId" => "2297",
    "CustomerOrderId" => "123456789",
    "ExistingTelephoneNumberOrderType" => [
        "TelephoneNumberList" => [
            "TelephoneNumber" => [ "9193752369", "9193752720", "9193752648"]
        ]
    ]
]);

获取订单

$response = $account->orders()->order("f30a31a1-1de4-4939-b094-4521bbe5c8df", true); // tndetail=true
$order = $response->Order;

列出订单

$items = $account->orders()->getList();

向订单添加备注

$order->notes()->create([ "UserId" => "byo_dev", "Description" => "Test Note"]);

获取订单的所有Tns

$order->tns()->getList();

端口导入

创建端口导入

$portin = $account->portins()->create(array(
    "BillingTelephoneNumber" => "6882015002",
    "Subscriber" => array(
        "SubscriberType" => "BUSINESS",
        "BusinessName" => "Acme Corporation",
        "ServiceAddress" => array(
            "HouseNumber" => "1623",
            "StreetName" => "Brockton Ave",
            "City" => "Los Angeles",
            "StateCode" => "CA",
            "Zip" => "90025",
            "Country" => "USA"
        )
    ),
    "LoaAuthorizingPerson" => "John Doe",
    "ListOfPhoneNumbers" => array(
        "PhoneNumber" => array("9882015025", "9882015026")
    ),
    "SiteId" => "365",
    "Triggered" => "false"
));

获取端口导入

$portin = $account->portins()->portin("d28b36f7-fa96-49eb-9556-a40fca49f7c6"));

列出端口导入

$portins = $account->portins()->getList(["pon" => "a pon" ]);

端口导入实例方法

$portin->update();
$portin->delete();
$portin->get_activation_status();
$status = $portin->set_activation_status([
    "AutoActivationDate" => "2014-08-30T18:30:00+03:00"
]);
$portin->history();
$portin->totals();
$portin->notes()->getList();

端口导入文件管理

$portin->list_loas(true); // metadata = true
$portin->loas_send("./1.txt");
$portin->loas_update("./1.txt", "1.txt");
$portin->loas_delete("1.txt");
$portin->get_metadata("1.txt");
$meta_new = array(
    "DocumentName" => "text.txt",
    "DocumentType" => "INVOICE"
);
$portin->set_metadata('test.txt', $meta_new);
$portin->delete_metadata('test.txt');

费率中心

列出费率中心

$rc = new \Iris\RateCenter($client);
$cities = $rc->getList(["state" => "CA", "available" => "true"]);

SIP对等方

创建SIP对等方

$sippeer = $account->sippeers()->create(array(
        "PeerName" => "Test5 Peer",
        "IsDefaultPeer" => false,
        "ShortMessagingProtocol" => "SMPP",
        "VoiceHosts" => array(
            "Host" => array(
                "HostName" => "192.168.181.90"
            )
        ),
        "SmsHosts" => array(
            "Host" => array(
                "HostName" => "192.168.181.90"
            )
        ),
        "TerminationHosts" => array(
            "TerminationHost" => array(
                "HostName" => "192.168.181.90",
                "Port" => 0,
                "CustomerTrafficAllowed" => "DOMESTIC",
                "DataAllowed" => true
            )
        )
));

获取SIP对等方

$sippeer = $account->sippeers->sippeer("500651");

列出SIP对等方

$sippeers = $account->sippeers()->getList();

删除SIP对等方

$sippeer->delete();

移动TNs

$sippeer->movetns([ "FullNumber" => [ "9192000046", "9192000047", "9192000048" ]]);

获取TNs

$tns = $sippeer->tns()->getList();

获取TN

$tn = $sippeer->tns()->tn("8183386251");

总TNs

$count = $sippeer->totaltns();

设置TN选项

$sippeer->tns()->tn("8183386251")->set_tn_options([
    "FullNumber" => "8183386251",
    "CallForward" => "9194394706",
    "RewriteUser" => "JohnDoe",
    "NumberFormat" => "10digit",
    "RPIDFormat" => "e164"
]);

站点

创建站点

$site = $account->sites()->create(
    array("Name" => "Test Site",
        "Address" => array(
            "City" => "Raleigh",
            "AddressType" => "Service",
            "HouseNumber" => "1",
            "StreetName" => "Avenue",
            "StateCode" => "NC"
    )));

更新站点

$site->Name = "New Name";
$site->update();

删除站点

$site->delete();

列出所有站点

$sites = $account->sites()->getList();

站点的订单

$site->orders()->getList(["status" => "disabled"]);

站点的总TNs

$site->totaltns();

站点的端口导入

$site->portins()->getList(["status" => "disabled" ]);

Sippeers

$site->sippeers()->create([...])

[参见SIP对等方]

订阅

创建订阅

$subscription = $account->subscriptions()->create([
    "OrderType" => "portins",
    "OrderId" => "98939562-90b0-40e9-8335-5526432d9741",
    "EmailSubscription" => [
        "Email" => "test@test.com",
        "DigestRequested" => "DAILY"
    ]
]);

获取订阅

$subscription = $account->subscriptions()->subscription($id);

列出订阅

$account->subscriptions()->getList(["orderType" => "portins"]);

更新

$subscription->OrderType = "portins";
$subscription->update();

DELETE

$subscription->delete();

TNs

获取TN

$tns = new Iris\Tns(null, $client);
$tn = $tns->tn($id);

列出TNs

$tns = new Iris\Tns(null, $client);
$tns_items = $tns->getList(["page" => 1, "size" => 10 ]);

TN实例方法

$tn = $tns->tn("7576768750");
$site = $tn->site();
$sippeer = $tn->sippeer();
$tnreservation = $tn->tnreservation();
$tn->tndetails();
$rc = $tn->ratecenter();
$lata = $tn->lata();
$lca = $tn->lca();

TN预订

创建TN预订

$resertation = $account->tnsreservations()->create(["ReservedTn" => "2512027430"]);

获取TN预订

$resertation = $account->tnsreservations()->tnsreservation("0099ff73-da96-4303-8a0a-00ff316c07aa");

删除TN预订

$resertation = $account->tnsreservations()->tnsreservation("0099ff73-da96-4303-8a0a-00ff316c07aa");
$resertation->delete();

账单报告

列出所有账单报告实例

$billingReports = $account->billingreports()->getList();

请求新的账单报告

$billingReport = $account->billingreports()->request(
    array("Type" => "bdr",
        "DateRange" => array(
            "StartDate" => "2018-02-05",
            "EndDate" => "2018-02-06",
    )));

检查账单报告的状态

$billingReport = $account->billingreports()->billingreport('a12b456c8-abcd-1a3b-a1b2-0a2b4c6d8e0f2');

下载包含账单报告内容的zip文件

$zipStream = $billingReport->file();

下载包含账单报告内容的zip文件并保存到文件

$outFile = '/tmp/report.zip';
$billingReport->file(['stream' => true, 'sink' => $outFile]);