无法使用 smooch-java 从 android 应用发送短信
Can not send text message from android app using smooch-java
我尝试使用 smooch-java
从 Android 应用发送短信,但每次都收到错误请求。
我的代码:
String jwt = "";
try {
jwt = Jwts.builder()
.claim("scope", "app")
.setHeaderParam(KEY_ID, "MY_KEY_ID")
.signWith(
SignatureAlgorithm.HS256,
"MY_SECRET".getBytes("UTF-8")
)
.compact();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!jwt.isEmpty()) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth apiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("jwt");
apiKeyAuth.setApiKey(jwt);
apiKeyAuth.setApiKeyPrefix("Bearer");
ConversationApi apiInstance = new ConversationApi();
String userId = preferencesRepository.getUserId();
MessagePost messagePostBody = new MessagePost();
messagePostBody.setRole("appUser");
messagePostBody.setType(MessagePost.TypeEnum.TEXT);
messagePostBody.setText(message);
try {
PostMessagesResponse result = apiInstance.postMessage(userId, messagePostBody);
Log.d(TAG, "sendMessage: " + result);
} catch (ApiException e) {
Log.e(TAG, "sendMessage:", e);
}
}
错误日志:
io.smooch.client.ApiException: Bad Request
{"error":{"code":"bad_request","description":".items: should not have less than 1 items"}}
来自Docs,这是一条短信,我不需要任何items
但是错误说我至少需要一个item
似乎是生成的与 this issue 相关的包装器中的错误。
Smooch codegen 分支已更新,新版本的包装器已 released。这个版本应该可以正常工作。
我已将库更新至 1.2.0,但仍然出现错误。但我通过将项目设置为空来修复它:
String jwt = "";
try {
jwt = Jwts.builder()
.claim("scope", "app")
.setHeaderParam(KEY_ID, "MY_KEY_ID")
.signWith(
SignatureAlgorithm.HS256,
"MY_SECRET".getBytes("UTF-8")
)
.compact();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!jwt.isEmpty()) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth apiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("jwt");
apiKeyAuth.setApiKey(jwt);
apiKeyAuth.setApiKeyPrefix("Bearer");
ConversationApi apiInstance = new ConversationApi();
String userId = preferencesRepository.getUserId();
MessagePost messagePostBody = new MessagePost();
messagePostBody.setRole("appUser");
messagePostBody.setType(MessagePost.TypeEnum.TEXT);
messagePostBody.setText(message);
messagePostBody.setItems(null);
try {
PostMessagesResponse result = apiInstance.postMessage(userId, messagePostBody);
Log.d(TAG, "sendMessage: " + result);
} catch (ApiException e) {
Log.e(TAG, "sendMessage:", e);
}
}
成功了
我尝试使用 smooch-java
从 Android 应用发送短信,但每次都收到错误请求。
我的代码:
String jwt = "";
try {
jwt = Jwts.builder()
.claim("scope", "app")
.setHeaderParam(KEY_ID, "MY_KEY_ID")
.signWith(
SignatureAlgorithm.HS256,
"MY_SECRET".getBytes("UTF-8")
)
.compact();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!jwt.isEmpty()) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth apiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("jwt");
apiKeyAuth.setApiKey(jwt);
apiKeyAuth.setApiKeyPrefix("Bearer");
ConversationApi apiInstance = new ConversationApi();
String userId = preferencesRepository.getUserId();
MessagePost messagePostBody = new MessagePost();
messagePostBody.setRole("appUser");
messagePostBody.setType(MessagePost.TypeEnum.TEXT);
messagePostBody.setText(message);
try {
PostMessagesResponse result = apiInstance.postMessage(userId, messagePostBody);
Log.d(TAG, "sendMessage: " + result);
} catch (ApiException e) {
Log.e(TAG, "sendMessage:", e);
}
}
错误日志:
io.smooch.client.ApiException: Bad Request
{"error":{"code":"bad_request","description":".items: should not have less than 1 items"}}
来自Docs,这是一条短信,我不需要任何items
但是错误说我至少需要一个item
似乎是生成的与 this issue 相关的包装器中的错误。
Smooch codegen 分支已更新,新版本的包装器已 released。这个版本应该可以正常工作。
我已将库更新至 1.2.0,但仍然出现错误。但我通过将项目设置为空来修复它:
String jwt = "";
try {
jwt = Jwts.builder()
.claim("scope", "app")
.setHeaderParam(KEY_ID, "MY_KEY_ID")
.signWith(
SignatureAlgorithm.HS256,
"MY_SECRET".getBytes("UTF-8")
)
.compact();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (!jwt.isEmpty()) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
ApiKeyAuth apiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("jwt");
apiKeyAuth.setApiKey(jwt);
apiKeyAuth.setApiKeyPrefix("Bearer");
ConversationApi apiInstance = new ConversationApi();
String userId = preferencesRepository.getUserId();
MessagePost messagePostBody = new MessagePost();
messagePostBody.setRole("appUser");
messagePostBody.setType(MessagePost.TypeEnum.TEXT);
messagePostBody.setText(message);
messagePostBody.setItems(null);
try {
PostMessagesResponse result = apiInstance.postMessage(userId, messagePostBody);
Log.d(TAG, "sendMessage: " + result);
} catch (ApiException e) {
Log.e(TAG, "sendMessage:", e);
}
}
成功了