|
1 | 1 | package ai.api.model;
|
2 | 2 |
|
| 3 | +import ai.api.model.ResponseMessage.ResponsePayload; |
3 | 4 | import com.google.gson.Gson;
|
| 5 | +import com.google.gson.JsonArray; |
4 | 6 | import com.google.gson.JsonElement;
|
5 | 7 | import com.google.gson.JsonObject;
|
6 | 8 |
|
| 9 | +import java.util.List; |
7 | 10 | import org.junit.Test;
|
8 | 11 |
|
9 | 12 | import java.text.DateFormat;
|
@@ -154,4 +157,78 @@ public void ResponseToStringTest2() {
|
154 | 157 | System.out.printf("%s : %s%n", parameter.getKey(), parameter.getValue());
|
155 | 158 | }
|
156 | 159 | }
|
| 160 | + |
| 161 | + @Test |
| 162 | + public void complexResponseTest(){ |
| 163 | + final String responseJson = "{\n" |
| 164 | + + " \"id\": \"b5765188-227c-465f-abc4-38674d18e1b6\",\n" |
| 165 | + + " \"timestamp\": \"2017-07-19T21:24:40.661Z\",\n" |
| 166 | + + " \"lang\": \"en\",\n" |
| 167 | + + " \"result\": {\n" |
| 168 | + + " \"source\": \"agent\",\n" |
| 169 | + + " \"resolvedQuery\": \"hi\",\n" |
| 170 | + + " \"action\": \"\",\n" |
| 171 | + + " \"actionIncomplete\": false,\n" |
| 172 | + + " \"parameters\": {},\n" |
| 173 | + + " \"contexts\": [],\n" |
| 174 | + + " \"metadata\": {\n" |
| 175 | + + " \"intentId\": \"df4522d6-5222-4bab-96e1-2218b4a12561\",\n" |
| 176 | + + " \"webhookUsed\": \"false\",\n" |
| 177 | + + " \"webhookForSlotFillingUsed\": \"false\",\n" |
| 178 | + + " \"intentName\": \"hi\"\n" |
| 179 | + + " },\n" |
| 180 | + + " \"fulfillment\": {\n" |
| 181 | + + " \"speech\": \"Hi there!\",\n" |
| 182 | + + " \"messages\": [\n" |
| 183 | + + " {\n" |
| 184 | + + " \"type\": 0,\n" |
| 185 | + + " \"speech\": \"Hi there!\"\n" |
| 186 | + + " },\n" |
| 187 | + + " {\n" |
| 188 | + + " \"type\": 4,\n" |
| 189 | + + " \"payload\": {\n" |
| 190 | + + " \"native-android\": {\n" |
| 191 | + + " \"quick-responses\": [\n" |
| 192 | + + " \"Yes\",\n" |
| 193 | + + " \"No\",\n" |
| 194 | + + " \"I don't know\"\n" |
| 195 | + + " ]\n" |
| 196 | + + " }\n" |
| 197 | + + " }\n" |
| 198 | + + " }\n" |
| 199 | + + " ]\n" |
| 200 | + + " },\n" |
| 201 | + + " \"score\": 1\n" |
| 202 | + + " },\n" |
| 203 | + + " \"status\": {\n" |
| 204 | + + " \"code\": 200,\n" |
| 205 | + + " \"errorType\": \"success\"\n" |
| 206 | + + " },\n" |
| 207 | + + " \"sessionId\": \"9bdd9303-4937-4464-82f7-3d260d7283c3\"\n" |
| 208 | + + "}"; |
| 209 | + |
| 210 | + final AIResponse aiResponse = gson.fromJson(responseJson, AIResponse.class); |
| 211 | + |
| 212 | + List<ResponseMessage> messages = aiResponse.getResult().getFulfillment().getMessages(); |
| 213 | + |
| 214 | + for (ResponseMessage message : messages) { |
| 215 | + if (message instanceof ResponsePayload) { |
| 216 | + final ResponsePayload customPayload = (ResponsePayload)message; |
| 217 | + |
| 218 | + final JsonObject payload = customPayload.getPayload(); |
| 219 | + |
| 220 | + final JsonObject androidPayload = payload.getAsJsonObject("native-android"); |
| 221 | + final JsonArray quickResponses = androidPayload.getAsJsonArray("quick-responses"); |
| 222 | + |
| 223 | + JsonElement firstReply = quickResponses.get(0); |
| 224 | + assertEquals("Yes", firstReply.getAsString()); |
| 225 | + |
| 226 | + JsonElement secondReply = quickResponses.get(1); |
| 227 | + assertEquals("No", secondReply.getAsString()); |
| 228 | + |
| 229 | + JsonElement thirdReply = quickResponses.get(2); |
| 230 | + assertEquals("I don't know", thirdReply.getAsString()); |
| 231 | + } |
| 232 | + } |
| 233 | + } |
157 | 234 | }
|
0 commit comments