UNPKG

@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
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