macure / jojka-sdk
Jojka API 的 SDK 库
v1.0.3
2022-10-19 15:41 UTC
Requires
- php: ^7.2.5
- guzzlehttp/guzzle: ^7.4
- jms/serializer: ^3.17
- symfony/options-resolver: ^5.4
Requires (Dev)
- phpunit/phpunit: ^8.5
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(); }