macure/jojka-sdk

Jojka API 的 SDK 库

v1.0.3 2022-10-19 15:41 UTC

This package is auto-updated.

Last update: 2024-09-19 20:23:35 UTC


README

此仓库包含一个开源的 PHP SDK,允许您从您的 PHP 应用程序中访问 Jojka REST API。

安装

可以使用 Composer 安装 Jojka PHP SDK。运行以下命令

composer require macure/jojka-sdk

用法

注意:此版本的 Jojka SDK for PHP 需要 PHP 7.2.5 或更高版本。

API 调用需要 API 密钥。在使用库之前,请确保您已经获取了密钥。

require_once __DIR__ . '/vendor/autoload.php'; // change path as needed

$sdk = new \Macure\JojkaSDK\JojkaSDK([
	'API_key' => '{app-key}'
]);

活动服务

使用活动服务,您可以添加和取消活动,并获取活动接收者状态。

use Macure\JojkaSDK\Http\Requests\AddCampaignRequest;
use Macure\JojkaSDK\Http\Requests\CancelCampaignRequest;
use Macure\JojkaSDK\Http\Requests\GetCampaignRecipientsStatusRequest;

// add campaign
$response = $sdk->campaign->addCampaign([
    AddCampaignRequest::TO_MSISDN => '46709771337;46709966666',
    AddCampaignRequest::MSG       => 'hello',
    AddCampaignRequest::SCHEDULED => '2016-05-31 12:18:52',
    AddCampaignRequest::NAME      => 'test campaign'
]);

// cancel campaign
$response = $sdk->campaign->cancelCampaign([
    CancelCampaignRequest::CAMPAIGN_ID => 287359
]);

// get campaign recipients status
$response = $sdk->campaign->getCampaignRecipientsStatus([
    GetCampaignRecipientsStatusRequest::CAMPAIGN_ID => 287359
]);

联系服务

使用联系服务,您可以添加或删除联系,添加或删除联系到组,导入和导出联系列表,添加或删除到黑名单。

use Macure\JojkaSDK\Http\Requests\AddContactRequest;
use Macure\JojkaSDK\Http\Requests\InBlocklistRequest;
use Macure\JojkaSDK\Http\Requests\RemoveContactRequest;
use Macure\JojkaSDK\Http\Requests\AddToBlocklistRequest;
use Macure\JojkaSDK\Http\Requests\AddContactToGroupRequest;
use Macure\JojkaSDK\Http\Requests\ExportContactsListRequest;
use Macure\JojkaSDK\Http\Requests\ImportContactsListRequest;
use Macure\JojkaSDK\Http\Requests\GetGroupsFromMsisdnRequest;
use Macure\JojkaSDK\Http\Requests\RemoveFromBlocklistRequest;
use Macure\JojkaSDK\Http\Requests\RemoveContactFromGroupRequest;

// add contact
$response = $sdk->contact->addContact([
    AddContactRequest::MSISDN => '46709771337',
    AddContactRequest::NAME   => 'Lilleman',
    AddContactRequest::GROUP  => 'Utvecklare;Jojka personal'
]);

// remove contact
$response = $sdk->contact->removeContact([
    RemoveContactRequest::MSISDN => '46709771337'
]);

// add to group
$response = $sdk->contact->addContactToGroup([
    AddContactToGroupRequest::MSISDN => '46709771337',
    AddContactToGroupRequest::GROUP  => 'gruppnamn2'
]);

// remove from group
$response = $sdk->contact->removeContactFromGroup([
    RemoveContactFromGroupRequest::MSISDN => '46709771337',
    RemoveContactFromGroupRequest::GROUP  => 'Utvecklare'
]);

// import contacts
$response = $sdk->contact->importContactsList([
    ImportContactsListRequest::CONTACTS_LIST => [
        [
            'msisdn' => '46709771337',
            'name'   => 'Lilleman',
            'groups' => ['Utvecklare', 'Jojka personal 46709966666', 'Rutger', 'Lindquist', 'VD']
        ]
    ]
]);

// export contacts
$response = $sdk->contact->exportContactsList([
    ExportContactsListRequest::MAX    => 100,
    ExportContactsListRequest::OFFSET => 0
]);

// get groups from msisdn
$response = $sdk->contact->getGroupsFromMsisdn([
    GetGroupsFromMsisdnRequest::MSISDN => '46709771337'
]);

// add to blocklist
$response = $sdk->contact->addToBlocklist([
    AddToBlocklistRequest::MSISDN => '46709771337'
]);

// remove from blocklist
$response = $sdk->contact->removeFromBlocklist([
    RemoveFromBlocklistRequest::MSISDN => '46709771337'
]);

// in blocklist
$response = $sdk->contact->inBlocklist([
    InBlocklistRequest::MSISDN => '46709771337'
]);

消息服务

使用消息服务,您可以获取回复,通过活动获取消息 ID,获取消息状态并发送消息。

use Macure\JojkaSDK\Http\Requests\SendRequest;$response
use Macure\JojkaSDK\Http\Requests\FetchRepliesRequest;
use Macure\JojkaSDK\Http\Requests\GetMessageStatusRequest;
use Macure\JojkaSDK\Http\Requests\GetMessageIdsByCampaignIdRequest;

// fetch replies
$response = $sdk->message->fetchReplies([
    FetchRepliesRequest::FROM_MSISDN => '46709771337',
    FetchRepliesRequest::SINCE_TIME  => '2016-05-31 13:00:06'
]);

// get message ids by campaign id
$response = $sdk->message->getMessageIdsByCampaignId([
    GetMessageIdsByCampaignIdRequest::CAMPAIGN_ID => 287359
]);

// get message status
$response = $sdk->message->getMessageStatus([
    GetMessageStatusRequest::MSG_ID => '6223c1c6079e9c21b5901d63',
]);

// send
$response = $sdk->message->send([
    SendRequest::TO  => '46709771337',
    SendRequest::MSG => 'hello world'
]);

响应

所有服务调用都返回 \Macure\JojkaSDK\Http\Response 的实例。

namespace Macure\JojkaSDK\Http\Response;

use GuzzleHttp\Psr7\Response as Psr7Response;

class Response extends Psr7Response {}

在 Response 类中,方法 "deserialize" 将 API 响应反序列化,并将其映射到适当的模型、对象、数组等,以便可以轻松地在任何应用程序中使用。

require_once __DIR__ . '/vendor/autoload.php'; // change path as needed

use Macure\JojkaSDK\Models\Contact;
use Macure\JojkaSDK\Http\Response\ContactListResponse;
use Macure\JojkaSDK\Http\Requests\ImportContactsListRequest;

$sdk = new \Macure\JojkaSDK\JojkaSDK([
	'API_key' => '{app-key}'
]);

/**
 * @var ContactListResponse $response
 */
$response = $sdk->contacts->importContactsList([
    ImportContactsListRequest::CONTACTS_LIST => [
        [
            'msisdn' => '46709771337',
            'name'   => 'Lilleman',
            'groups' => ['Utvecklare', 'Jojka personal 46709966666', 'Rutger', 'Lindquist', 'VD']
        ]
    ]
]);

/**
 * @var Contact[] $contacts
 */
$contacts = $response->deserialize();

foreach ($contacts as $contact) {
    $name   = $contact->getName();
    $groups = $contact->getGroups();
}