在钉钉中stream模式发送卡片的java代码示例?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
请参考以下Java代码示例,演示了在Stream模式下处理卡片回调请求的实现:
import com.dingtalk.open.app.api.OpenDingTalkStreamClientBuilder;
import com.dingtalk.open.app.api.callback.OpenDingTalkCallbackListener;
import com.dingtalk.open.app.api.security.AuthClientCredential;
/**
 * 长连接holder, 维护和钉钉开放平台外联网关的Stream长连接
 * @author dingtalk
 */
public class PersistenceConnectionHolder {
    private static OpenDingTalkCallbackListener<CardCallbackRequest, CardCallbackResponse> yourListener= new OpenDingTalkCallbackListener<CardCallbackRequest, CardCallbackResponse>(){
    @Override
    public CardCallbackResponse execute(CardCallbackRequest request) {
        log.info("receive call back request, {}", request);
        //your code is here
        //开发者根据自身业务需求,变更卡片内容,返回response
        CardCallbackResponse response = new CardCallbackResponse();
        return response;
    }
};
// 其他代码逻辑,如长连接建立、维护等...
/**
 * 卡片回调请求
 */
public static class CardCallbackRequest{
    private String type;
    private String outTrackId;
    private String content;
    private String corpId;
    private String userId;
    public static class ActionCallbackContent {
        private PrivateCardActionData cardPrivateData;
        public static class PrivateCardActionData {
            private List<String> actionIds;
            private Map<String, Object> params;
        }
    }
}
/**
 * 卡片回调响应
 */
public static class CardCallbackResponse {
    private CardDataDTO cardData;
    private CardDataDTO privateCardData;
    public static class CardDataDTO{
        private Map<String, String> cardParamMap;
    }
}
}
此代码段展示了如何定义一个监听器OpenDingTalkCallbackListener来处理卡片的事件回调请求。当用户与卡片交互(例如点击按钮)时,钉钉服务器会通过Stream长连接向你的服务推送一个CardCallbackRequest对象。你需要在execute方法中实现具体的业务逻辑处理,并最终返回一个CardCallbackResponse对象以更新或回应卡片状态。此回答整理来自钉群“钉钉开发者社区(互助群)”。