Skip to content

Commit 85f4780

Browse files
authored
Merge pull request #72 from messagebird/add-conversations
Add conversations
2 parents c120385 + 04dc51d commit 85f4780

29 files changed

+1936
-21
lines changed

examples/conversations/create.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
// Initiates a conversation by sending a first message. This example uses a
4+
// plain text message, but other types are also available. See the
5+
// conversations-messages-create examples.
6+
7+
require(__DIR__ . '/../../autoload.php');
8+
9+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
10+
11+
$content = new \MessageBird\Objects\Conversation\Content();
12+
$content->text = 'Hello world';
13+
14+
$message = new \MessageBird\Objects\Conversation\Message();
15+
$message->channelId = 'CHANNEL_ID';
16+
$message->content = $content;
17+
$message->to = 'RECIPIENT'; // Channel-specific, e.g. MSISDN for SMS.
18+
$message->type = 'text';
19+
20+
try {
21+
$conversation = $messageBird->conversations->create($message);
22+
23+
var_dump($conversation);
24+
} catch (\Exception $e) {
25+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
26+
}

examples/conversations/list.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
// Retrieves all conversations for this account. Pagination is supported
4+
// through the optional 'limit' and 'offset' parameters.
5+
6+
require(__DIR__ . '/../../autoload.php');
7+
8+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
9+
10+
// Take 10 objects, but skip the first 5.
11+
$optionalParameters = array(
12+
'limit' => '10',
13+
'offset' => '5',
14+
);
15+
16+
try {
17+
$conversations = $messageBird->conversations->getList($optionalParameters);
18+
19+
var_dump($conversations);
20+
} catch (\Exception $e) {
21+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
22+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
// Sends a message to an existing conversation, with a location as its content.
4+
5+
require(__DIR__ . '/../../autoload.php');
6+
7+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
8+
9+
$content = new \MessageBird\Objects\Conversation\Content();
10+
$content->location = array(
11+
'latitude' => 52.379112,
12+
'longitude' => 4.900384,
13+
);
14+
15+
$message = new \MessageBird\Objects\Conversation\Message();
16+
$message->channelId = 'CHANNEL_ID';
17+
$message->content = $content;
18+
$message->to = 'RECIPIENT';
19+
$message->type = \MessageBird\Objects\Conversation\Content::TYPE_LOCATION; // 'location'
20+
21+
try {
22+
$conversation = $messageBird->conversationMessages->create(
23+
'CONVERSATION_ID',
24+
$message
25+
);
26+
27+
var_dump($conversation);
28+
} catch (\Exception $e) {
29+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
30+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
// Sends a message to an existing conversation, with media as its content.
4+
// Supported media types are 'audio', 'file', 'image' and 'video.
5+
6+
require(__DIR__ . '/../../autoload.php');
7+
8+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
9+
10+
$content = new \MessageBird\Objects\Conversation\Content();
11+
$content->image = array(
12+
'url' => 'https://cdn-gc.messagebird.com/assets/images/logo.png'
13+
);
14+
15+
$message = new \MessageBird\Objects\Conversation\Message();
16+
$message->channelId = 'CHANNEL_ID';
17+
$message->content = $content;
18+
$message->to = 'RECIPIENT_MSISDN';
19+
$message->type = \MessageBird\Objects\Conversation\Content::TYPE_IMAGE; // 'image'
20+
21+
try {
22+
// Using a contactId instead of a conversationId is also supported.
23+
$conversation = $messageBird->conversationMessages->create(
24+
'CONVERSATION_ID',
25+
$message
26+
);
27+
28+
var_dump($conversation);
29+
} catch (\Exception $e) {
30+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
31+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
// Sends a plain text message to a contact. If there's an active conversation
4+
// with that contact the message will be added to this conversation, otherwise
5+
// it creates a new conversation.
6+
7+
require(__DIR__ . '/../../autoload.php');
8+
9+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
10+
11+
$content = new \MessageBird\Objects\Conversation\Content();
12+
$content->text = 'Hello world';
13+
14+
$message = new \MessageBird\Objects\Conversation\Message();
15+
$message->channelId = 'CHANNEL_ID';
16+
$message->content = $content;
17+
$message->to = 'RECIPIENT';
18+
$message->type = \MessageBird\Objects\Conversation\Content::TYPE_TEXT;
19+
20+
try {
21+
$conversation = $messageBird->conversationMessages->create(
22+
'CONVERSATION_ID',
23+
$message
24+
);
25+
26+
var_dump($conversation);
27+
} catch (\Exception $e) {
28+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
29+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
// Retrieves all messages from the conversation. Pagination is supported
4+
// through the optional 'limit' and 'offset' parameters.
5+
6+
require(__DIR__ . '/../../autoload.php');
7+
8+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
9+
10+
try {
11+
$messages = $messageBird->conversationMessages->getList('CONVERSATION_ID');
12+
13+
var_dump($messages);
14+
} catch (\Exception $e) {
15+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
16+
}

examples/conversations/read.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
// Retrieves a single conversation by its ID.
4+
5+
require(__DIR__ . '/../../autoload.php');
6+
7+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
8+
9+
// Setting the optional 'include' parameter to 'content' requests the API to
10+
// include the expanded Contact object in its response. Excluded by default.
11+
$optionalParameters = array(
12+
'include' => 'content',
13+
);
14+
15+
try {
16+
$conversation = $messageBird->conversations->read(
17+
'CONVERSATION_ID',
18+
$optionalParameters
19+
);
20+
21+
var_dump($conversation);
22+
} catch (\Exception $e) {
23+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
24+
}

examples/conversations/update.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
// Updating the conversation allows moving them between 'active' and 'archived'
4+
// status. This example restores an archived conversation by setting it to active.
5+
6+
require(__DIR__ . '/../../autoload.php');
7+
8+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
9+
10+
try {
11+
$conversationId = 'CONVERSATION_ID';
12+
$conversation = $messageBird->conversations->read($conversationId);
13+
14+
$conversation->status = \MessageBird\Objects\Conversation\Conversation::STATUS_ACTIVE;
15+
$messageBird->conversations->update($conversation, $conversationId);
16+
} catch (\Exception $e) {
17+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
18+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
// Webhooks enable real-time notifications of conversation events to be
4+
// delivered to endpoints on your own server. This example creates a webhook
5+
// that is invoked when new conversations and messages are created in the
6+
// specified channel.
7+
8+
require(__DIR__ . '/../../autoload.php');
9+
10+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
11+
12+
try {
13+
$webhook = new \MessageBird\Objects\Conversation\Webhook();
14+
$webhook->channelId = 'CHANNEL_ID';
15+
$webhook->url = 'https://example.com/webhook';
16+
$webhook->events = array(
17+
\MessageBird\Objects\Conversation\Webhook::EVENT_CONVERSATION_CREATED,
18+
\MessageBird\Objects\Conversation\Webhook::EVENT_MESSAGE_CREATED,
19+
20+
// Other options:
21+
// \MessageBird\Objects\Conversation\Webhook::EVENT_CONVERSATION_UPDATED,
22+
// \MessageBird\Objects\Conversation\Webhook::EVENT_MESSAGE_UPDATED,
23+
);
24+
25+
$messageBird->conversationWebhooks->create($webhook);
26+
} catch (\Exception $e) {
27+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
28+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
// Webhooks enable real-time notifications of conversation events to be
4+
// delivered to endpoints on your own server. This example deletes an existing
5+
// webhook.
6+
7+
require(__DIR__ . '/../../autoload.php');
8+
9+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
10+
11+
try {
12+
$messageBird->conversationWebhooks->delete('WEBHOOK_ID');
13+
} catch (\Exception $e) {
14+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
15+
}

0 commit comments

Comments
 (0)