Skip to content

Commit 8230bb2

Browse files
author
marcel corso gonzalez
authored
Merge pull request #92 from guiajlopes/feature/ENG-127-add-read-message
Add read message method
2 parents 30739d8 + df7c305 commit 8230bb2

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
// Retrieves a message.
4+
5+
require(__DIR__ . '/../../autoload.php');
6+
7+
$messageBird = new \MessageBird\Client('YOUR_ACCESS_KEY'); // Set your own API access key here.
8+
9+
try {
10+
$message = $messageBird->conversationMessages->read('YOUR MESSAGE ID');
11+
12+
var_dump($message);
13+
} catch (\Exception $e) {
14+
echo sprintf("%s: %s", get_class($e), $e->getMessage());
15+
}

src/MessageBird/Resources/Conversation/Messages.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class Messages
2020
const HTTP_STATUS_OK = 200;
2121

2222
const RESOURCE_NAME = 'conversations/%s/messages';
23+
const MESSAGE_RESOURCE_NAME = 'messages/%s';
2324

2425
/**
2526
* @var HttpClient
@@ -123,6 +124,28 @@ public function getList($conversationId, $parameters = array())
123124
return $this->processRequest($body);
124125
}
125126

127+
public function read($messageId, $parameters = array()) {
128+
list($status, , $body) = $this->httpClient->performHttpRequest(
129+
HttpClient::REQUEST_GET,
130+
sprintf(self::MESSAGE_RESOURCE_NAME, $messageId),
131+
$parameters
132+
);
133+
134+
if ($status !== self::HTTP_STATUS_OK) {
135+
return $this->processRequest($body);
136+
}
137+
138+
$body = json_decode($body);
139+
if (empty($body)) {
140+
return $this->processRequest($body);
141+
}
142+
143+
$message = new Message();
144+
$message->loadFromArray($body);
145+
146+
return $message;
147+
}
148+
126149
/**
127150
* Formats a URL for the Conversation API's messages endpoint based on the
128151
* conversationId.

tests/integration/conversation/ConversationMessageTest.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,22 @@ class ConversationMessageTest extends BaseTest
3030
]
3131
}';
3232

33+
const READ_RESPONSE = '{
34+
"channelId": "chid",
35+
"contactId": "conid",
36+
"content": {
37+
"video": {
38+
"url": "https://developers.messagebird.com/assets/videos/foo.mp4"
39+
}
40+
},
41+
"conversationId": "conid",
42+
"createdDatetime": "2002-10-02T16:00:00Z",
43+
"direction": "received",
44+
"id": "genid",
45+
"status": "delivered",
46+
"type": "video"
47+
}';
48+
3349
public function setUp()
3450
{
3551
parent::setUp();
@@ -154,4 +170,31 @@ public function testListObject()
154170

155171
$this->assertEquals($expectedMessage, $message);
156172
}
173+
174+
public function testReadMessage()
175+
{
176+
$this->mockClient
177+
->expects($this->once())->method('performHttpRequest')
178+
->with('GET', 'messages/message-id', array(), null)
179+
->willReturn(array(200, '', self::READ_RESPONSE));
180+
181+
182+
$message = $this->client->conversationMessages->read('message-id');
183+
184+
$expectedContent = new Content();
185+
$expectedContent->video = array(
186+
'url' => 'https://developers.messagebird.com/assets/videos/foo.mp4'
187+
);
188+
$expectedMessage = new Message();
189+
$expectedMessage->id = 'genid';
190+
$expectedMessage->channelId = 'chid';
191+
$expectedMessage->conversationId = 'conid';
192+
$expectedMessage->content = $expectedContent;
193+
$expectedMessage->type = 'video';
194+
$expectedMessage->direction = 'received';
195+
$expectedMessage->status = 'delivered';
196+
$expectedMessage->createdDatetime = '2002-10-02T16:00:00Z';
197+
198+
$this->assertEquals($expectedMessage, $message);
199+
}
157200
}

0 commit comments

Comments
 (0)