@warriorteam/redai-zalo-sdk
Version:
Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs
102 lines • 4.13 kB
TypeScript
import { ZaloClient } from "../clients/zalo-client";
import { GroupTextMessage, GroupImageMessage, GroupFileMessage, GroupStickerMessage, GroupMentionMessage, GroupMessageResult, GroupInfo, GroupMember } from "../types/group";
/**
* Service for handling Zalo Official Account Group Message Framework (GMF) APIs
*
* CONDITIONS FOR USING ZALO GMF:
*
* 1. OPT-IN CONDITIONS FOR SENDING GROUP MESSAGES:
* - OA must have the group_id of the chat group
* - OA must be added to the chat group by group admin
* - OA must have permission to send messages in the group (granted by group admin)
* - Chat group must be active (not locked or disbanded)
*
* 2. ACCESS PERMISSIONS:
* - Application needs to be granted group chat management permissions
* - Access token must have "manage_group" scope or equivalent
* - OA must be authenticated and have active status
*
* 3. LIMITS AND CONSTRAINTS:
* - Can only send messages to groups that OA has joined
* - Cannot send messages to private groups that OA hasn't been invited to
* - Must comply with Zalo's message sending frequency limits
* - Message content must comply with Zalo's content policy
*
* 4. SUPPORTED MESSAGE TYPES:
* - Text message: Plain text messages
* - Image message: Image messages (JPG, PNG, GIF - max 5MB)
* - File message: File attachments (max 25MB)
* - Sticker message: Stickers from Zalo collection
* - Mention message: Tag/mention specific members
*
* 5. TECHNICAL REQUIREMENTS:
* - Use HTTPS for all API calls
* - Content-Type: application/json for text/mention messages
* - Content-Type: multipart/form-data for file/image uploads
*/
export declare class GroupMessageService {
private readonly client;
private readonly endpoints;
constructor(client: ZaloClient);
/**
* Send text message to group
* @param accessToken OA access token
* @param groupId Group ID
* @param message Text message content
* @returns Send result
*/
sendTextMessage(accessToken: string, groupId: string, message: GroupTextMessage): Promise<GroupMessageResult>;
/**
* Send image message to group
* @param accessToken OA access token
* @param groupId Group ID
* @param message Image message content
* @returns Send result
*/
sendImageMessage(accessToken: string, groupId: string, message: GroupImageMessage): Promise<GroupMessageResult>;
/**
* Send file message to group
* @param accessToken OA access token
* @param groupId Group ID
* @param message File message content
* @returns Send result
*/
sendFileMessage(accessToken: string, groupId: string, message: GroupFileMessage): Promise<GroupMessageResult>;
/**
* Send sticker message to group
* @param accessToken OA access token
* @param groupId Group ID
* @param message Sticker message content
* @returns Send result
*/
sendStickerMessage(accessToken: string, groupId: string, message: GroupStickerMessage): Promise<GroupMessageResult>;
/**
* Send mention message to group
* @param accessToken OA access token
* @param groupId Group ID
* @param message Mention message content
* @returns Send result
*/
sendMentionMessage(accessToken: string, groupId: string, message: GroupMentionMessage): Promise<GroupMessageResult>;
/**
* Get group information
* @param accessToken OA access token
* @param groupId Group ID
* @returns Group information
*/
getGroupInfo(accessToken: string, groupId: string): Promise<GroupInfo>;
/**
* Get group members
* @param accessToken OA access token
* @param groupId Group ID
* @param offset Offset for pagination
* @param count Number of members to retrieve
* @returns Group members list
*/
getGroupMembers(accessToken: string, groupId: string, offset?: number, count?: number): Promise<{
members: GroupMember[];
total: number;
}>;
private handleGroupMessageError;
}
//# sourceMappingURL=group-message.service.d.ts.map