Skip to content

Commit eadce5e

Browse files
authored
Merge pull request #82 from line/support_provide_user_id_by_group_n_room
Provide the user ID on group and room event
2 parents 5b923c3 + 1bfe052 commit eadce5e

File tree

2 files changed

+50
-20
lines changed

2 files changed

+50
-20
lines changed

src/LINEBot/Event/BaseEvent.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,9 @@ public function isUnknownEvent()
117117
* Returns user ID of the event.
118118
*
119119
* @return string|null
120-
* @throws InvalidEventSourceException Raise when called with non user type event.
121120
*/
122121
public function getUserId()
123122
{
124-
if (!$this->isUserEvent()) {
125-
throw new InvalidEventSourceException('This event source is not a user type');
126-
}
127123
return array_key_exists('userId', $this->event['source'])
128124
? $this->event['source']['userId']
129125
: null;

tests/LINEBot/EventRequestParserTest.php

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,20 @@ class EventRequestParserTest extends \PHPUnit_Framework_TestCase
6767
"type":"image"
6868
}
6969
},
70+
{
71+
"type":"message",
72+
"timestamp":12345678901234,
73+
"source":{
74+
"type":"group",
75+
"groupId":"groupid",
76+
"userId":"userid"
77+
},
78+
"replyToken":"replytoken",
79+
"message":{
80+
"id":"contentid",
81+
"type":"audio"
82+
}
83+
},
7084
{
7185
"type":"message",
7286
"timestamp":12345678901234,
@@ -85,7 +99,8 @@ class EventRequestParserTest extends \PHPUnit_Framework_TestCase
8599
"timestamp":12345678901234,
86100
"source":{
87101
"type":"room",
88-
"roomId":"roomid"
102+
"roomId":"roomid",
103+
"userId":"userid"
89104
},
90105
"replyToken":"replytoken",
91106
"message":{
@@ -221,9 +236,9 @@ public function testParseEventRequest()
221236
{
222237
$bot = new LINEBot(new DummyHttpClient($this, function () {
223238
}), ['channelSecret' => 'testsecret']);
224-
$events = $bot->parseEventRequest($this::$json, 'nwhDFVDoPEfWyaXthI/KrL0HdTJWafDYqW6RHlgvi6M=');
239+
$events = $bot->parseEventRequest($this::$json, 'Cz7xWmZJizFKB+paG1imAwycGOSAq6IUMVw4slB3VpQ=');
225240

226-
$this->assertEquals(count($events), 15);
241+
$this->assertEquals(count($events), 16);
227242

228243
{
229244
// text
@@ -247,18 +262,35 @@ public function testParseEventRequest()
247262
$this->assertTrue($event->isGroupEvent());
248263
$this->assertEquals('groupid', $event->getGroupId());
249264
$this->assertEquals('groupid', $event->getEventSourceId());
265+
$this->assertEquals(null, $event->getUserId());
250266
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\ImageMessage', $event);
251267
/** @var ImageMessage $event */
252268
$this->assertEquals('replytoken', $event->getReplyToken());
253269
$this->assertEquals('image', $event->getMessageType());
270+
$this->assertEquals('contentid', $event->getMessageId());
254271
}
255272

256273
{
257-
// video
274+
// audio (group event & it has user ID)
258275
$event = $events[2];
276+
$this->assertTrue($event->isGroupEvent());
277+
$this->assertEquals('groupid', $event->getGroupId());
278+
$this->assertEquals('groupid', $event->getEventSourceId());
279+
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\AudioMessage', $event);
280+
$this->assertEquals('userid', $event->getUserId());
281+
/** @var AudioMessage $event */
282+
$this->assertEquals('replytoken', $event->getReplyToken());
283+
$this->assertEquals('audio', $event->getMessageType());
284+
$this->assertEquals('contentid', $event->getMessageId());
285+
}
286+
287+
{
288+
// video
289+
$event = $events[3];
259290
$this->assertTrue($event->isRoomEvent());
260291
$this->assertEquals('roomid', $event->getRoomId());
261292
$this->assertEquals('roomid', $event->getEventSourceId());
293+
$this->assertEquals(null, $event->getUserId());
262294
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\VideoMessage', $event);
263295
/** @var VideoMessage $event */
264296
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -267,7 +299,9 @@ public function testParseEventRequest()
267299

268300
{
269301
// audio
270-
$event = $events[3];
302+
$event = $events[4];
303+
$this->assertTrue($event->isRoomEvent());
304+
$this->assertEquals('userid', $event->getUserId());
271305
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\AudioMessage', $event);
272306
/** @var AudioMessage $event */
273307
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -276,7 +310,7 @@ public function testParseEventRequest()
276310

277311
{
278312
// location
279-
$event = $events[4];
313+
$event = $events[5];
280314
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\LocationMessage', $event);
281315
/** @var LocationMessage $event */
282316
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -289,7 +323,7 @@ public function testParseEventRequest()
289323

290324
{
291325
// sticker
292-
$event = $events[5];
326+
$event = $events[6];
293327
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\StickerMessage', $event);
294328
/** @var StickerMessage $event */
295329
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -300,39 +334,39 @@ public function testParseEventRequest()
300334

301335
{
302336
// follow
303-
$event = $events[6];
337+
$event = $events[7];
304338
$this->assertInstanceOf('LINE\LINEBot\Event\FollowEvent', $event);
305339
/** @var FollowEvent $event */
306340
$this->assertEquals('replytoken', $event->getReplyToken());
307341
}
308342

309343
{
310344
// unfollow
311-
$event = $events[7];
345+
$event = $events[8];
312346
$this->assertInstanceOf('LINE\LINEBot\Event\UnfollowEvent', $event);
313347
/** @var UnfollowEvent $event */
314348
$this->assertTrue($event->getReplyToken() === null);
315349
}
316350

317351
{
318352
// join
319-
$event = $events[8];
353+
$event = $events[9];
320354
$this->assertInstanceOf('LINE\LINEBot\Event\JoinEvent', $event);
321355
/** @var JoinEvent $event */
322356
$this->assertEquals('replytoken', $event->getReplyToken());
323357
}
324358

325359
{
326360
// leave
327-
$event = $events[9];
361+
$event = $events[10];
328362
$this->assertInstanceOf('LINE\LINEBot\Event\LeaveEvent', $event);
329363
/** @var LeaveEvent $event */
330364
$this->assertTrue($event->getReplyToken() === null);
331365
}
332366

333367
{
334368
// postback
335-
$event = $events[10];
369+
$event = $events[11];
336370
$this->assertInstanceOf('LINE\LINEBot\Event\PostbackEvent', $event);
337371
/** @var PostbackEvent $event */
338372
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -341,7 +375,7 @@ public function testParseEventRequest()
341375

342376
{
343377
// beacon
344-
$event = $events[11];
378+
$event = $events[12];
345379
$this->assertInstanceOf('LINE\LINEBot\Event\BeaconDetectionEvent', $event);
346380
/** @var BeaconDetectionEvent $event */
347381
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -352,7 +386,7 @@ public function testParseEventRequest()
352386

353387
{
354388
// unknown event (event source: user)
355-
$event = $events[12];
389+
$event = $events[13];
356390
$this->assertInstanceOf('LINE\LINEBot\Event\UnknownEvent', $event);
357391
/** @var UnknownEvent $event */
358392
$this->assertEquals('__unknown__', $event->getType());
@@ -366,7 +400,7 @@ public function testParseEventRequest()
366400

367401
{
368402
// unknown event (event source: unknown)
369-
$event = $events[13];
403+
$event = $events[14];
370404
$this->assertInstanceOf('LINE\LINEBot\Event\UnknownEvent', $event);
371405
/** @var UnknownEvent $event */
372406
$this->assertEquals('__unknown__', $event->getType());
@@ -379,7 +413,7 @@ public function testParseEventRequest()
379413

380414
{
381415
// message event & unknown message event
382-
$event = $events[14];
416+
$event = $events[15];
383417
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent', $event);
384418
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\UnknownMessage', $event);
385419
/** @var UnknownMessage $event */

0 commit comments

Comments
 (0)