package org.xyzh.common.wechat.kefu.message;

import org.xyzh.common.wechat.pojo.kefu.KefuSyncMsgResponse.KefuSyncMsg;

/**
 * @description    客服消息处理 Handler 接口
 *                 业务模块实现此接口处理客服消息和事件
 * @filename    KefuMessageHandler.java
 * @author    yslg
 * @copyright xyzh
 * @since 2025-12-19
 */
public interface KefuMessageHandler {

    /**
     * 用户进入会话事件
     * @param openKfid 客服账号ID
     * @param externalUserid 用户ID
     * @param scene 场景值
     * @param sceneParam 场景参数（可传递工单ID等）
     * @param welcomeCode 欢迎语code
     */
    void onEnterSession(String openKfid, String externalUserid, String scene, String sceneParam, String welcomeCode);

    /**
     * 收到文本消息
     */
    void onTextMessage(String openKfid, String externalUserid, String msgid, String content, Long sendTime);

    /**
     * 收到图片消息
     */
    void onImageMessage(String openKfid, String externalUserid, String msgid, String mediaId, Long sendTime);

    /**
     * 会话状态变更
     */
    void onSessionStatusChange(String openKfid, String externalUserid, String changeType, 
            String oldServicerUserid, String newServicerUserid);

    /**
     * 消息发送失败
     */
    void onMsgSendFail(String openKfid, String externalUserid, String failMsgid, String failType);

    /**
     * 其他消息（语音、视频、文件等）
     */
    default void onOtherMessage(KefuSyncMsg msg) {}

}
