Skip to content

Commit 7ba489f

Browse files
committed
Support message broadcast
1 parent e1f5664 commit 7ba489f

File tree

6 files changed

+90
-0
lines changed

6 files changed

+90
-0
lines changed

line-bot-api-client/src/main/java/com/linecorp/bot/client/LineMessagingClient.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.List;
2020
import java.util.concurrent.CompletableFuture;
2121

22+
import com.linecorp.bot.model.Broadcast;
2223
import com.linecorp.bot.model.Multicast;
2324
import com.linecorp.bot.model.PushMessage;
2425
import com.linecorp.bot.model.ReplyMessage;
@@ -74,6 +75,14 @@ public interface LineMessagingClient {
7475
*/
7576
CompletableFuture<BotApiResponse> multicast(Multicast multicast);
7677

78+
/**
79+
* Sends push messages to multiple users at any time.
80+
* Note: LINE@ accounts cannot call this API endpoint. Please migrate it to a LINE official account.
81+
* For more information, see <a href="https://developers.line.biz/en/docs/messaging-api/migrating-line-at/">
82+
* Migration of LINE@ accounts</a>.
83+
*/
84+
CompletableFuture<BotApiResponse> broadcast(Broadcast broadcast);
85+
7786
/**
7887
* Download image, video, and audio data sent from users.
7988
*

line-bot-api-client/src/main/java/com/linecorp/bot/client/LineMessagingClientImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.function.Function;
2424

2525
import com.linecorp.bot.client.exception.GeneralLineMessagingException;
26+
import com.linecorp.bot.model.Broadcast;
2627
import com.linecorp.bot.model.Multicast;
2728
import com.linecorp.bot.model.PushMessage;
2829
import com.linecorp.bot.model.ReplyMessage;
@@ -78,6 +79,11 @@ public CompletableFuture<BotApiResponse> multicast(final Multicast multicast) {
7879
return toFuture(retrofitImpl.multicast(multicast));
7980
}
8081

82+
@Override
83+
public CompletableFuture<BotApiResponse> broadcast(Broadcast broadcast) {
84+
return toFuture(retrofitImpl.broadcast(broadcast));
85+
}
86+
8187
@Override
8288
public CompletableFuture<MessageContentResponse> getMessageContent(final String messageId) {
8389
return toMessageContentResponseFuture(retrofitImpl.getMessageContent(messageId));

line-bot-api-client/src/main/java/com/linecorp/bot/client/LineMessagingService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.util.List;
2020

21+
import com.linecorp.bot.model.Broadcast;
2122
import com.linecorp.bot.model.Multicast;
2223
import com.linecorp.bot.model.PushMessage;
2324
import com.linecorp.bot.model.ReplyMessage;
@@ -74,6 +75,12 @@ interface LineMessagingService {
7475
@POST("v2/bot/message/multicast")
7576
Call<BotApiResponse> multicast(@Body Multicast multicast);
7677

78+
/**
79+
* Sends push messages to multiple users at any time.
80+
*/
81+
@POST("v2/bot/message/broadcast")
82+
Call<BotApiResponse> broadcast(@Body Broadcast broadcast);
83+
7784
/**
7885
* Method for Retrofit.
7986
*

line-bot-api-client/src/test/java/com/linecorp/bot/client/LineMessagingClientImplTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.mockito.junit.MockitoRule;
3838
import org.mockito.stubbing.OngoingStubbing;
3939

40+
import com.linecorp.bot.model.Broadcast;
4041
import com.linecorp.bot.model.Multicast;
4142
import com.linecorp.bot.model.PushMessage;
4243
import com.linecorp.bot.model.ReplyMessage;
@@ -124,6 +125,16 @@ public void multicastTest() throws Exception {
124125
assertThat(botApiResponse).isEqualTo(BOT_API_SUCCESS_RESPONSE);
125126
}
126127

128+
@Test
129+
public void broadcast() {
130+
whenCall(retrofitMock.broadcast(any()), BOT_API_SUCCESS_RESPONSE);
131+
final Broadcast broadcast = new Broadcast(Collections.singletonList(new TextMessage("text")), true);
132+
133+
final BotApiResponse botApiResponse = target.broadcast(broadcast).join();
134+
verify(retrofitMock).broadcast(broadcast);
135+
assertThat(botApiResponse).isEqualTo(BOT_API_SUCCESS_RESPONSE);
136+
}
137+
127138
@Test
128139
public void getMessageContentTest() throws Exception {
129140
whenCall(retrofitMock.getMessageContent(any()),
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Copyright 2019 LINE Corporation
3+
*
4+
* LINE Corporation licenses this file to you under the Apache License,
5+
* version 2.0 (the "License"); you may not use this file except in compliance
6+
* with the License. You may obtain a copy of the License at:
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13+
* License for the specific language governing permissions and limitations
14+
* under the License.
15+
*/
16+
17+
package com.linecorp.bot.model;
18+
19+
import java.util.List;
20+
21+
import com.fasterxml.jackson.annotation.JsonCreator;
22+
23+
import com.linecorp.bot.model.message.Message;
24+
25+
import lombok.AllArgsConstructor;
26+
import lombok.Value;
27+
28+
/**
29+
* Sends push messages to multiple users at any time.
30+
*/
31+
@Value
32+
@AllArgsConstructor(onConstructor = @__(@JsonCreator))
33+
public class Broadcast {
34+
35+
/**
36+
* List of Message objects.
37+
*
38+
* <p>Max: 5
39+
*/
40+
List<Message> messages;
41+
42+
/**
43+
* Whether sends a push notification to message receivers or not. If {@literal true}, the user doesn't
44+
* receive a push notification when the message is sent. And if {@literal false}, the user receives a push
45+
* notification when the message is sent (unless they have disabled push notifications in LINE and/or their
46+
* device).
47+
*/
48+
boolean notificationDisabled;
49+
}

line-bot-model/src/test/java/com/linecorp/bot/model/message/MessageJsonReconstructionTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
import com.fasterxml.jackson.databind.ObjectMapper;
3232

33+
import com.linecorp.bot.model.Broadcast;
3334
import com.linecorp.bot.model.Multicast;
3435
import com.linecorp.bot.model.action.CameraAction;
3536
import com.linecorp.bot.model.action.CameraRollAction;
@@ -175,6 +176,13 @@ public void multicastTest() {
175176
test(multicast);
176177
}
177178

179+
@Test
180+
public void broadcast() {
181+
final Broadcast broadcast = new Broadcast(singletonList(new TextMessage("text")), true);
182+
183+
test(broadcast);
184+
}
185+
178186
////////////////////////////////////////////////////////////////////////////////////////////////////////////
179187

180188
void test(final Object original) {

0 commit comments

Comments
 (0)