0

我尝试使用 Android 应用程序发送短信,smooch-java但每次都收到错误的请求。

我的代码:

        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

4

2 回答 2

0

似乎这是与此问题相关的生成包装器中的错误。

Smooch codegen fork 已更新,新版本的包装器已发布。这个版本应该可以正常工作。

于 2017-05-12T15:24:54.083 回答
0

我已将 lib 更新为 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);
        }
    }

它奏效了

于 2017-05-15T02:19:47.760 回答