UNPKG

typed-wx-api

Version:
1,699 lines (969 loc) 38.6 kB
[typed-wx-api](../README.md) / [Exports](../modules.md) / WeixinAPI # Class: WeixinAPI ## Hierarchy - `WeixinBase` - `WeixinIP` - `WeixinJs` - `WeixinUser` - `WeixinQRCode` - `WeixinMedia` - `WeixinMaterial` - `WeixinDraft` - `WeixinFreePublish` - `WeixinOpenAPI` - `WeixinMenu` - `WeixinMessage` ↳ **`WeixinAPI`** ## Table of contents ### Constructors - [constructor](WeixinAPI.md#constructor) ### Properties - [config](WeixinAPI.md#config) - [logger](WeixinAPI.md#logger) - [appid](WeixinAPI.md#appid) - [secret](WeixinAPI.md#secret) ### Methods - [request](WeixinAPI.md#request) - [getAccessToken](WeixinAPI.md#getaccesstoken) - [ensureAccessToken](WeixinAPI.md#ensureaccesstoken) - [getTicket](WeixinAPI.md#getticket) - [ensureTicket](WeixinAPI.md#ensureticket) - [pkcs7Decoder](WeixinAPI.md#pkcs7decoder) - [pkcs7Encoder](WeixinAPI.md#pkcs7encoder) - [initCrypto](WeixinAPI.md#initcrypto) - [rawSignature](WeixinAPI.md#rawsignature) - [encrypt](WeixinAPI.md#encrypt) - [decrypt](WeixinAPI.md#decrypt) - [resolveAccessToken](WeixinAPI.md#resolveaccesstoken) - [resolveTicket](WeixinAPI.md#resolveticket) - [getIdList](WeixinAPI.md#getidlist) ### 草稿 - [addDraft](WeixinAPI.md#adddraft) - [getDraft](WeixinAPI.md#getdraft) - [deleteDraft](WeixinAPI.md#deletedraft) - [updateDraft](WeixinAPI.md#updatedraft) - [getDraftCount](WeixinAPI.md#getdraftcount) - [getDrafts](WeixinAPI.md#getdrafts) ### 图文消息 - [submitFreePublish](WeixinAPI.md#submitfreepublish) - [getFreePublish](WeixinAPI.md#getfreepublish) - [deleteFreePublish](WeixinAPI.md#deletefreepublish) - [getArticle](WeixinAPI.md#getarticle) - [getFreePublishes](WeixinAPI.md#getfreepublishes) ### 微信服务器 - [getIP](WeixinAPI.md#getip) ### JS_SDK - [getJsConfig](WeixinAPI.md#getjsconfig) - [getCardExtConfig](WeixinAPI.md#getcardextconfig) ### 永久素材 - [uploadMaterial](WeixinAPI.md#uploadmaterial) - [uploadVideoMaterial](WeixinAPI.md#uploadvideomaterial) - [getVideoMaterial](WeixinAPI.md#getvideomaterial) - [getMaterial](WeixinAPI.md#getmaterial) - [getNewsMaterial](WeixinAPI.md#getnewsmaterial) - [deleteMaterial](WeixinAPI.md#deletematerial) - [getMaterialCount](WeixinAPI.md#getmaterialcount) - [getMaterials](WeixinAPI.md#getmaterials) - [getNewsMaterials](WeixinAPI.md#getnewsmaterials) ### 临时素材 - [uploadMedia](WeixinAPI.md#uploadmedia) - [getMedia](WeixinAPI.md#getmedia) - [getVideoMedia](WeixinAPI.md#getvideomedia) - [getMediaHD](WeixinAPI.md#getmediahd) - [uploadImage](WeixinAPI.md#uploadimage) ### 菜单 - [createMenu](WeixinAPI.md#createmenu) - [getMenu](WeixinAPI.md#getmenu) - [removeMenu](WeixinAPI.md#removemenu) - [getCurrentSelfMenuInfo](WeixinAPI.md#getcurrentselfmenuinfo) - [addConditionalMenu](WeixinAPI.md#addconditionalmenu) - [delConditionalMenu](WeixinAPI.md#delconditionalmenu) - [tryMatchConditionalMenu](WeixinAPI.md#trymatchconditionalmenu) ### 消息 - [sendMessage](WeixinAPI.md#sendmessage) - [getAutoReplyInfo](WeixinAPI.md#getautoreplyinfo) ### API额度 - [getQuota](WeixinAPI.md#getquota) - [clearQuota](WeixinAPI.md#clearquota) - [getRid](WeixinAPI.md#getrid) ### 二维码 - [createTmpQRCode](WeixinAPI.md#createtmpqrcode) - [createLimitQRCode](WeixinAPI.md#createlimitqrcode) - [showQRCodeURL](WeixinAPI.md#showqrcodeurl) ### 用户 - [getUser](WeixinAPI.md#getuser) - [batchGetUsers](WeixinAPI.md#batchgetusers) - [getFollowers](WeixinAPI.md#getfollowers) - [updateRemark](WeixinAPI.md#updateremark) - [createTag](WeixinAPI.md#createtag) - [getTags](WeixinAPI.md#gettags) - [updateTag](WeixinAPI.md#updatetag) - [deleteTag](WeixinAPI.md#deletetag) - [getUsersFromTag](WeixinAPI.md#getusersfromtag) - [batchTagging](WeixinAPI.md#batchtagging) - [batchUnTagging](WeixinAPI.md#batchuntagging) ## Constructors ### constructor • **new WeixinAPI**(`config`, `tokenStorage?`) #### Parameters | Name | Type | | :------ | :------ | | `config` | `Object` | | `config.appid` | `string` | | `config.secret` | `string` | | `tokenStorage?` | [`TokenStorage`](../interfaces/TokenStorage.md) | #### Inherited from WeixinBase.constructor ## Properties ### config`Readonly` **config**: `Required`<[`APIConfig`](../modules.md#apiconfig)\> #### Inherited from WeixinBase.config ___ ### logger • **logger**: [`Logger`](../modules.md#logger) #### Inherited from WeixinBase.logger ___ ### appid`Readonly` **appid**: `string` #### Inherited from WeixinBase.appid ___ ### secret`Readonly` **secret**: `string` #### Inherited from WeixinBase.secret ## Methods ### request ▸ **request**(`opts`, `retry?`): `Promise`<`any`\> #### Parameters | Name | Type | Default value | | :------ | :------ | :------ | | `opts` | `AxiosRequestConfig`<`any`\> & { `ignoreAccessToken?`: `boolean` } | `undefined` | | `retry` | `number` | `3` | #### Returns `Promise`<`any`\> #### Inherited from WeixinBase.request ___ ### getAccessToken ▸ **getAccessToken**(): `Promise`<[`AccessToken`](AccessToken.md)\> #### Returns `Promise`<[`AccessToken`](AccessToken.md)\> #### Inherited from WeixinBase.getAccessToken ___ ### ensureAccessToken ▸ **ensureAccessToken**(): `Promise`<[`AccessToken`](AccessToken.md)\> #### Returns `Promise`<[`AccessToken`](AccessToken.md)\> #### Inherited from WeixinBase.ensureAccessToken ___ ### getTicket ▸ **getTicket**(`type`): `Promise`<[`Ticket`](Ticket.md)\> #### Parameters | Name | Type | | :------ | :------ | | `type` | `string` | #### Returns `Promise`<[`Ticket`](Ticket.md)\> #### Inherited from WeixinBase.getTicket ___ ### ensureTicket ▸ **ensureTicket**(`type`): `Promise`<[`Ticket`](Ticket.md)\> #### Parameters | Name | Type | | :------ | :------ | | `type` | `string` | #### Returns `Promise`<[`Ticket`](Ticket.md)\> #### Inherited from WeixinBase.ensureTicket ___ ### pkcs7Decoder ▸ **pkcs7Decoder**(`buff`): `Buffer` AES算法pkcs7 padding Decoder #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `buff` | `Buffer` | 需要解码的Buffer | #### Returns `Buffer` #### Inherited from WeixinBase.pkcs7Decoder ___ ### pkcs7Encoder ▸ **pkcs7Encoder**(`buff`): `Buffer` AES算法pkcs7 padding Encoder #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `buff` | `Buffer` | 需要编码码的Buffer | #### Returns `Buffer` #### Inherited from WeixinBase.pkcs7Encoder ___ ### initCrypto ▸ **initCrypto**(`corpId`, `token`, `encodingAESKey`): `void` 初始化AES解密的配置信息 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `corpId` | `string` | 企业微信的corpId,当为第三方套件回调事件时,corpId的内容为suiteId | | `token` | `string` | 企业微信的token,当为第三方套件回调事件时,token的内容为套件的token | | `encodingAESKey` | `string` | 企业微信的encodingAESKey,当为第三方套件回调事件时,encodingAESKey的内容为套件的encodingAESKey | #### Returns `void` #### Inherited from WeixinBase.initCrypto ___ ### rawSignature ▸ **rawSignature**(`timestamp`, `nonce`, `encrypt`): `string` 生成签名 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `timestamp` | `number` | String\|Number 时间戳 | | `nonce` | `string` | String 随机串 | | `encrypt` | `string` | String 加密的数据 | #### Returns `string` String 排好序的签名 #### Inherited from WeixinBase.rawSignature ___ ### encrypt ▸ **encrypt**(`message`, `corpId`): `string` 对给定的消息进行AES加密 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `message` | `string` | - | | `corpId` | `string` | 可选 需要对比的corpId,如果第三方回调时默认是suiteId,也可自行传入作为匹配处理 | #### Returns `string` 加密后的结果 #### Inherited from WeixinBase.encrypt ___ ### decrypt ▸ **decrypt**(`str`, `corpId`): `string` 对给定的密文进行AES解密 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `str` | `string` | 需要解密的密文 | | `corpId` | `string` | 可选 需要对比的corpId,如果第三方回调时默认是suiteId,也可自行传入作为匹配处理 | #### Returns `string` 解密后的结果 #### Inherited from WeixinBase.decrypt ___ ### resolveAccessToken ▸ **resolveAccessToken**(): `Promise`<{ `access_token`: `any` = result.access\_token; `expires_in`: `any` = result.expires\_in }\> #### Returns `Promise`<{ `access_token`: `any` = result.access\_token; `expires_in`: `any` = result.expires\_in }\> #### Inherited from WeixinBase.resolveAccessToken ___ ### resolveTicket ▸ **resolveTicket**(`type`): `Promise`<`any`\> #### Parameters | Name | Type | | :------ | :------ | | `type` | `string` | #### Returns `Promise`<`any`\> #### Inherited from WeixinBase.resolveTicket ___ ### getIdList ▸ **getIdList**(`openid`): `Promise`<`number`[]\> 获取用户身上的标签列表 #### Parameters | Name | Type | | :------ | :------ | | `openid` | `string` | #### Returns `Promise`<`number`[]\> #### Inherited from WeixinUser.getIdList ## 草稿 ### addDraft ▸ **addDraft**(`draft`): `Promise`<{ `media_id`: `string` }\> 新建草稿 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `draft` | [`WxDraftNews`](../modules.md#wxdraftnews)[] | 草稿 | #### Returns `Promise`<{ `media_id`: `string` }\> #### Inherited from WeixinDraft.addDraft ___ ### getDraft ▸ **getDraft**(`media_id`): `Promise`<{ `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` }[] }\> 获取草稿 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<{ `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` }[] }\> #### Inherited from WeixinDraft.getDraft ___ ### deleteDraft ▸ **deleteDraft**(`media_id`): `Promise`<{}\> 删除草稿 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<{}\> #### Inherited from WeixinDraft.deleteDraft ___ ### updateDraft ▸ **updateDraft**(`draft`): `Promise`<{}\> 更新草稿 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `draft` | `Object` | 草稿 | | `draft.media_id` | `string` | - | | `draft.index` | `number` | 要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0 | | `draft.articles` | [`WxDraftNews`](../modules.md#wxdraftnews) | - | #### Returns `Promise`<{}\> #### Inherited from WeixinDraft.updateDraft ___ ### getDraftCount ▸ **getDraftCount**(): `Promise`<{ `total_count`: `number` }\> 获取草稿总数 #### Returns `Promise`<{ `total_count`: `number` }\> #### Inherited from WeixinDraft.getDraftCount ___ ### getDrafts ▸ **getDrafts**(`data`): `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `media_id`: `string` ; `content`: { `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` }[] } ; `update_time`: `number` }[] }\> 获取草稿列表 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `data` | `Object` | - | | `data.offset` | `number` | 从全部素材的该偏移位置开始返回,0表示从第一个素材返回 | | `data.count` | `number` | 返回素材的数量,取值在120之间 | | `data.no_content?` | ``0`` \| ``1`` | 1 表示不返回 content 字段,0 表示正常返回,默认为 0 | #### Returns `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `media_id`: `string` ; `content`: { `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` }[] } ; `update_time`: `number` }[] }\> #### Inherited from WeixinDraft.getDrafts ## 图文消息 ### submitFreePublish ▸ **submitFreePublish**(`media_id`): `Promise`<{ `publish_id`: `string` }\> 发布草稿 发布任务提交成功,并不意味着此时发布已经完成,仍有可能在后续的发布过程中出现异常情况导致发布失败,如原创声明失败、平台审核不通过等。 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<{ `publish_id`: `string` }\> #### Inherited from WeixinFreePublish.submitFreePublish ___ ### getFreePublish ▸ **getFreePublish**(`publish_id`): `Promise`<{ `publish_id`: `string` ; `publish_status`: ``0`` ; `article_id`: `string` ; `article_detail`: { `count`: `number` ; `item`: { `idx`: `number` ; `article_url`: `string` }[] } } \| { `publish_id`: `string` ; `publish_status`: ``1`` } \| { `publish_id`: `string` ; `publish_status`: ``2`` \| ``3`` \| ``4`` \| ``5`` \| ``6`` ; `fail_idx`: `number`[] }\> 发布状态轮询 publish_status: 发布状态,0:成功, 1:发布中,2:原创失败, 3: 常规失败, 4:平台审核不通过, 5:成功后用户删除所有文章, 6: 成功后系统封禁所有文章 fail_idx: 当发布状态为24时,返回不通过的文章编号,第一篇为 1 #### Parameters | Name | Type | | :------ | :------ | | `publish_id` | `string` | #### Returns `Promise`<{ `publish_id`: `string` ; `publish_status`: ``0`` ; `article_id`: `string` ; `article_detail`: { `count`: `number` ; `item`: { `idx`: `number` ; `article_url`: `string` }[] } } \| { `publish_id`: `string` ; `publish_status`: ``1`` } \| { `publish_id`: `string` ; `publish_status`: ``2`` \| ``3`` \| ``4`` \| ``5`` \| ``6`` ; `fail_idx`: `number`[] }\> #### Inherited from WeixinFreePublish.getFreePublish ___ ### deleteFreePublish ▸ **deleteFreePublish**(`data`): `Promise`<{}\> 删除发布 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `data` | `Object` | | | `data.article_id` | `string` | - | | `data.index?` | `number` | 要删除的文章在图文消息中的位置,第一篇编号为1,该字段不填或填0会删除全部文章 | #### Returns `Promise`<{}\> #### Inherited from WeixinFreePublish.deleteFreePublish ___ ### getArticle ▸ **getArticle**(`article_id`): `Promise`<{ `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` ; `is_deleted`: `boolean` }[] }\> 通过 article_id 获取已发布文章 #### Parameters | Name | Type | | :------ | :------ | | `article_id` | `string` | #### Returns `Promise`<{ `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` ; `is_deleted`: `boolean` }[] }\> #### Inherited from WeixinFreePublish.getArticle ___ ### getFreePublishes ▸ **getFreePublishes**(`data`): `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `article_id`: `string` ; `content`: { `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` ; `is_deleted`: `boolean` }[] } ; `update_time`: `number` }[] }\> 获取图文列表 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `data` | `Object` | - | | `data.offset` | `number` | 从全部素材的该偏移位置开始返回,0表示从第一个素材返回 | | `data.count` | `number` | 返回素材的数量,取值在120之间 | | `data.no_content?` | ``0`` \| ``1`` | 1 表示不返回 content 字段,0 表示正常返回,默认为 0 | #### Returns `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `article_id`: `string` ; `content`: { `news_item`: [`WxDraftNews`](../modules.md#wxdraftnews) & { `show_cover_pic?`: ``0`` \| ``1`` ; `url`: `string` ; `is_deleted`: `boolean` }[] } ; `update_time`: `number` }[] }\> #### Inherited from WeixinFreePublish.getFreePublishes ## 微信服务器 ### getIP ▸ **getIP**(): `Promise`<`string`[]\> 获取微信服务器IP地址 #### Returns `Promise`<`string`[]\> #### Inherited from WeixinIP.getIP ## JS_SDK ### getJsConfig ▸ **getJsConfig**(`param`): `Promise`<{ `debug`: `undefined` \| `boolean` = param.debug; `appId`: `string` ; `timestamp`: `string` = timestamp; `nonceStr`: `string` = nonceStr; `signature`: `string` = signature; `jsApiList`: `string`[] = param.jsApiList; `openTagList`: `string`[] }\> 获取微信JS SDK Config的所需参数 #### Parameters | Name | Type | | :------ | :------ | | `param` | `Object` | | `param.debug?` | `boolean` | | `param.jsApiList` | `string`[] | | `param.url` | `string` | | `param.openTagList?` | `string`[] | #### Returns `Promise`<{ `debug`: `undefined` \| `boolean` = param.debug; `appId`: `string` ; `timestamp`: `string` = timestamp; `nonceStr`: `string` = nonceStr; `signature`: `string` = signature; `jsApiList`: `string`[] = param.jsApiList; `openTagList`: `string`[] }\> #### Inherited from WeixinJs.getJsConfig ___ ### getCardExtConfig ▸ **getCardExtConfig**(`param`): `Promise`<{ `timestamp`: `string` = timestamp; `signature`: `string` = signature; `code`: `string` ; `openid`: `string` ; `balance`: `undefined` \| `number` = param.balance }\> 获取微信JS SDK Config的所需参数 #### Parameters | Name | Type | | :------ | :------ | | `param` | `Object` | | `param.card_id` | `string` | | `param.code?` | `string` | | `param.openid?` | `string` | | `param.balance?` | `number` | #### Returns `Promise`<{ `timestamp`: `string` = timestamp; `signature`: `string` = signature; `code`: `string` ; `openid`: `string` ; `balance`: `undefined` \| `number` = param.balance }\> #### Inherited from WeixinJs.getCardExtConfig ## 永久素材 ### uploadMaterial ▸ **uploadMaterial**(`buffer`, `type`, `filename`): `Promise`<{ `media_id`: `string` ; `url?`: `string` }\> 新增永久素材,分别有图片(image)、语音(voice)和缩略图(thumb) 图片(image): 10M,支持PNG\JPEG\JPG\GIF格式 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式 缩略图(thumb):64KB,支持JPG格式 #### Parameters | Name | Type | | :------ | :------ | | `buffer` | `Buffer` | | `type` | ``"image"`` \| ``"voice"`` \| ``"thumb"`` | | `filename` | `string` | #### Returns `Promise`<{ `media_id`: `string` ; `url?`: `string` }\> #### Inherited from WeixinMaterial.uploadMaterial ___ ### uploadVideoMaterial ▸ **uploadVideoMaterial**(`buffer`, `filename`, `title`, `introduction`): `Promise`<{ `media_id`: `string` }\> 新增永久视频素材 视频(video):10MB,支持MP4格式 #### Parameters | Name | Type | | :------ | :------ | | `buffer` | `Buffer` | | `filename` | `string` | | `title` | `string` | | `introduction` | `string` | #### Returns `Promise`<{ `media_id`: `string` }\> #### Inherited from WeixinMaterial.uploadVideoMaterial ___ ### getVideoMaterial ▸ **getVideoMaterial**(`media_id`): `Promise`<{ `title`: `string` ; `description`: `string` ; `down_url`: `string` }\> 获取视频(video)永久素材 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<{ `title`: `string` ; `description`: `string` ; `down_url`: `string` }\> #### Inherited from WeixinMaterial.getVideoMaterial ___ ### getMaterial ▸ **getMaterial**(`media_id`): `Promise`<`Buffer`\> 获取图片(image)、语音(voice)和缩略图(thumb)永久素材 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<`Buffer`\> #### Inherited from WeixinMaterial.getMaterial ___ ### getNewsMaterial ▸ **getNewsMaterial**(`media_id`): `Promise`<{ `news_item`: { `title`: `string` ; `thumb_media_id`: `string` ; `show_cover_pic`: ``0`` \| ``1`` ; `author?`: `string` ; `digest?`: `string` ; `content`: `string` ; `url`: `string` ; `content_source_url`: `string` }[] }\> 获取图文消息(news)永久素材 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<{ `news_item`: { `title`: `string` ; `thumb_media_id`: `string` ; `show_cover_pic`: ``0`` \| ``1`` ; `author?`: `string` ; `digest?`: `string` ; `content`: `string` ; `url`: `string` ; `content_source_url`: `string` }[] }\> #### Inherited from WeixinMaterial.getNewsMaterial ___ ### deleteMaterial ▸ **deleteMaterial**(`media_id`): `Promise`<{}\> 删除永久素材 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<{}\> #### Inherited from WeixinMaterial.deleteMaterial ___ ### getMaterialCount ▸ **getMaterialCount**(): `Promise`<{ `voice_count`: `number` ; `video_count`: `number` ; `image_count`: `number` ; `news_count`: `number` }\> 获取素材总数 1. 永久素材的总数,也会计算公众平台官网素材管理中的素材 2.图片和图文消息素材(包括单图文和多图文)的总数上限为100000,其他素材的总数上限为1000 #### Returns `Promise`<{ `voice_count`: `number` ; `video_count`: `number` ; `image_count`: `number` ; `news_count`: `number` }\> #### Inherited from WeixinMaterial.getMaterialCount ___ ### getMaterials ▸ **getMaterials**(`type`, `offset?`, `count?`): `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `media_id`: `string` ; `name`: `string` ; `update_time`: `number` ; `url`: `string` }[] }\> 获取永久素材列表 #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `type` | ``"video"`` \| ``"image"`` \| ``"voice"`` | `undefined` | 素材的类型,图片(image)、视频(video)、语音 (voice) | | `offset` | `number` | `0` | 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 | | `count` | `number` | `20` | 返回素材的数量,取值在120之间 | #### Returns `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `media_id`: `string` ; `name`: `string` ; `update_time`: `number` ; `url`: `string` }[] }\> #### Inherited from WeixinMaterial.getMaterials ___ ### getNewsMaterials ▸ **getNewsMaterials**(`offset?`, `count?`): `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `media_id`: `string` ; `content`: { `news_item`: [{ `title`: `string` ; `thumb_media_id`: `string` ; `show_cover_pic`: ``0`` \| ``1`` ; `author?`: `string` ; `digest?`: `string` ; `content`: `string` ; `url`: `string` ; `content_source_url`: `string` }] } ; `update_time`: `number` }[] }\> 获取图文永久素材列表 #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `offset` | `number` | `0` | 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 | | `count` | `number` | `20` | 返回素材的数量,取值在120之间 | #### Returns `Promise`<{ `total_count`: `number` ; `item_count`: `number` ; `item`: { `media_id`: `string` ; `content`: { `news_item`: [{ `title`: `string` ; `thumb_media_id`: `string` ; `show_cover_pic`: ``0`` \| ``1`` ; `author?`: `string` ; `digest?`: `string` ; `content`: `string` ; `url`: `string` ; `content_source_url`: `string` }] } ; `update_time`: `number` }[] }\> #### Inherited from WeixinMaterial.getNewsMaterials ## 临时素材 ### uploadMedia ▸ **uploadMedia**(`buffer`, `type`, `filename`): `Promise`<{ `type`: ``"video"`` \| ``"image"`` \| ``"voice"`` \| ``"thumb"`` ; `media_id`: `string` ; `created_at`: `number` }\> 新增临时素材,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb) 1、临时素材media_id是可复用的。 2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。 3、上传临时素材的格式、大小限制与公众平台官网一致。 图片(image): 10M,支持PNG\JPEG\JPG\GIF格式 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式 视频(video):10MB,支持MP4格式 缩略图(thumb):64KB,支持JPG格式 #### Parameters | Name | Type | | :------ | :------ | | `buffer` | `Buffer` | | `type` | ``"video"`` \| ``"image"`` \| ``"voice"`` \| ``"thumb"`` | | `filename` | `string` | #### Returns `Promise`<{ `type`: ``"video"`` \| ``"image"`` \| ``"voice"`` \| ``"thumb"`` ; `media_id`: `string` ; `created_at`: `number` }\> #### Inherited from WeixinMedia.uploadMedia ___ ### getMedia ▸ **getMedia**(`media_id`): `Promise`<`Buffer`\> 获取临时素材 如果要获取视频素材, 请使用 getVideoMedia #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<`Buffer`\> #### Inherited from WeixinMedia.getMedia ___ ### getVideoMedia ▸ **getVideoMedia**(`media_id`): `Promise`<{ `video_url`: `string` }\> 获取临时视频素材 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<{ `video_url`: `string` }\> #### Inherited from WeixinMedia.getVideoMedia ___ ### getMediaHD ▸ **getMediaHD**(`media_id`): `Promise`<`Buffer`\> 获取高清语音素材 #### Parameters | Name | Type | | :------ | :------ | | `media_id` | `string` | #### Returns `Promise`<`Buffer`\> #### Inherited from WeixinMedia.getMediaHD ___ ### uploadImage ▸ **uploadImage**(`buffer`, `filename`): `Promise`<{ `url`: `string` }\> 上传图文消息内的图片获取URL #### Parameters | Name | Type | | :------ | :------ | | `buffer` | `Buffer` | | `filename` | `string` | #### Returns `Promise`<{ `url`: `string` }\> #### Inherited from WeixinMedia.uploadImage ## 菜单 ### createMenu ▸ **createMenu**(`menu`): `Promise`<{}\> 创建自定义菜单 #### Parameters | Name | Type | | :------ | :------ | | `menu` | [`WxMenu`](../modules.md#wxmenu) | #### Returns `Promise`<{}\> #### Inherited from WeixinMenu.createMenu ___ ### getMenu ▸ **getMenu**(): `Promise`<{ `menu`: [`WxMenu`](../modules.md#wxmenu) } \| { `menu?`: { `button`: [`Button`](../modules.md#button)[] ; `menuid`: `string` } ; `conditionalmenu?`: { `button`: [`Button`](../modules.md#button)[] ; `matchrule`: { `group_id?`: `string` ; `client_platform_type?`: ``2`` \| ``1`` \| ``3`` } ; `menuid`: `string` }[] }\> 获取自定义菜单配置 #### Returns `Promise`<{ `menu`: [`WxMenu`](../modules.md#wxmenu) } \| { `menu?`: { `button`: [`Button`](../modules.md#button)[] ; `menuid`: `string` } ; `conditionalmenu?`: { `button`: [`Button`](../modules.md#button)[] ; `matchrule`: { `group_id?`: `string` ; `client_platform_type?`: ``2`` \| ``1`` \| ``3`` } ; `menuid`: `string` }[] }\> #### Inherited from WeixinMenu.getMenu ___ ### removeMenu ▸ **removeMenu**(): `Promise`<{}\> 删除自定义菜单 #### Returns `Promise`<{}\> #### Inherited from WeixinMenu.removeMenu ___ ### getCurrentSelfMenuInfo ▸ **getCurrentSelfMenuInfo**(): `Promise`<{ `is_menu_open`: ``0`` \| ``1`` ; `selfmenu_info`: [`WxMenu`](../modules.md#wxmenu) \| { `button`: [`WxMpButtonItem`](../modules.md#wxmpbuttonitem) \| { `name`: `string` ; `type?`: `undefined` ; `sub_button`: [`WxMpButtonItem`](../modules.md#wxmpbuttonitem)[] } } }\> 查询自定义菜单配置 本接口将会提供公众号当前使用的自定义菜单的配置,如果公众号是通过API调用设置的菜单,则返回菜单的开发配置, 而如果公众号是在公众平台官网通过网站功能发布菜单,则本接口返回运营者设置的菜单配置。 #### Returns `Promise`<{ `is_menu_open`: ``0`` \| ``1`` ; `selfmenu_info`: [`WxMenu`](../modules.md#wxmenu) \| { `button`: [`WxMpButtonItem`](../modules.md#wxmpbuttonitem) \| { `name`: `string` ; `type?`: `undefined` ; `sub_button`: [`WxMpButtonItem`](../modules.md#wxmpbuttonitem)[] } } }\> #### Inherited from WeixinMenu.getCurrentSelfMenuInfo ___ ### addConditionalMenu ▸ **addConditionalMenu**(`menu`): `Promise`<{ `menuid`: `string` }\> 创建个性化自定义菜单 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `menu` | `Object` | - | | `menu.button` | [`Button`](../modules.md#button)[] | - | | `menu.matchrule` | `Object` | - | | `menu.matchrule.tag_id` | `string` | - | | `menu.matchrule.client_platform_type` | ``"1"`` \| ``"2"`` \| ``"3"`` | 客户端版本,当前只具体到系统型号:IOS(1), Android(2),Others(3),不填则不做匹配 | #### Returns `Promise`<{ `menuid`: `string` }\> #### Inherited from WeixinMenu.addConditionalMenu ___ ### delConditionalMenu ▸ **delConditionalMenu**(`menuid`): `Promise`<{}\> 删除个性化自定义菜单 #### Parameters | Name | Type | | :------ | :------ | | `menuid` | `string` | #### Returns `Promise`<{}\> #### Inherited from WeixinMenu.delConditionalMenu ___ ### tryMatchConditionalMenu ▸ **tryMatchConditionalMenu**(`user_id`): `Promise`<[`WxMenu`](../modules.md#wxmenu)\> 测试个性化菜单匹配结果 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `user_id` | `string` | 可以是粉丝的OpenID,也可以是粉丝的微信号。 | #### Returns `Promise`<[`WxMenu`](../modules.md#wxmenu)\> #### Inherited from WeixinMenu.tryMatchConditionalMenu ## 消息 ### sendMessage ▸ **sendMessage**(`toOpenid`, `message`, `kf_account?`): `Promise`<{}\> 发送客服消息 #### Parameters | Name | Type | | :------ | :------ | | `toOpenid` | `string` | | `message` | { `msgtype`: ``"text"`` ; `text`: { `content`: `string` } } \| { `msgtype`: ``"image"`` ; `image`: { `media_id`: `string` } } \| { `msgtype`: ``"voice"`` ; `voice`: { `media_id`: `string` } } \| { `msgtype`: ``"video"`` ; `video`: { `media_id`: `string` ; `thumb_media_id`: `string` ; `title?`: `string` ; `description?`: `string` } } \| { `msgtype`: ``"music"`` ; `music`: { `title?`: `string` ; `description?`: `string` ; `musicurl`: `string` ; `hqmusicurl`: `string` ; `thumb_media_id`: `string` } } \| { `msgtype`: ``"news"`` ; `news`: { `title?`: `string` ; `description?`: `string` ; `url`: `string` ; `picurl?`: `string` } } \| { `msgtype`: ``"mpnewsarticle"`` ; `mpnewsarticle`: { `article_id`: `string` } } \| { `msgtype`: ``"msgmenu"`` ; `msgmenu`: { `head_content`: `string` ; `tail_content`: `string` ; `list`: { `id`: `string` ; `content`: `string` }[] } } \| { `msgtype`: ``"wxcard"`` ; `wxcard`: { `card_id`: `string` } } \| { `msgtype`: ``"miniprogrampage"`` ; `miniprogrampage`: { `title`: `string` ; `appid`: `string` ; `pagepath`: `string` ; `thumb_media_id`: `string` } } | | `kf_account?` | `string` | #### Returns `Promise`<{}\> #### Inherited from WeixinMessage.sendMessage ___ ### getAutoReplyInfo ▸ **getAutoReplyInfo**(): `Promise`<{ `is_add_friend_reply_open`: ``0`` \| ``1`` ; `is_autoreply_open`: ``0`` \| ``1`` ; `add_friend_autoreply_info?`: [`WxReplyMessage`](../modules.md#wxreplymessage) ; `message_default_autoreply_info?`: [`WxReplyMessage`](../modules.md#wxreplymessage) ; `keyword_autoreply_info?`: { `list`: { `rule_name`: `string` ; `create_time`: `number` ; `reply_mode`: ``"reply_all"`` \| ``"random_one"`` ; `keyword_list_info`: { `type`: ``"text"`` ; `match_mode`: ``"contain"`` \| ``"equal"`` ; `content`: `string` }[] ; `reply_list_info`: [`WxReplyMessage`](../modules.md#wxreplymessage)[] }[] } }\> 获取自动回复规则 #### Returns `Promise`<{ `is_add_friend_reply_open`: ``0`` \| ``1`` ; `is_autoreply_open`: ``0`` \| ``1`` ; `add_friend_autoreply_info?`: [`WxReplyMessage`](../modules.md#wxreplymessage) ; `message_default_autoreply_info?`: [`WxReplyMessage`](../modules.md#wxreplymessage) ; `keyword_autoreply_info?`: { `list`: { `rule_name`: `string` ; `create_time`: `number` ; `reply_mode`: ``"reply_all"`` \| ``"random_one"`` ; `keyword_list_info`: { `type`: ``"text"`` ; `match_mode`: ``"contain"`` \| ``"equal"`` ; `content`: `string` }[] ; `reply_list_info`: [`WxReplyMessage`](../modules.md#wxreplymessage)[] }[] } }\> #### Inherited from WeixinMessage.getAutoReplyInfo ## API额度 ### getQuota ▸ **getQuota**(`cgi_path`): `Promise`<{ `daily_limit`: `number` ; `used`: `number` ; `remain`: `number` }\> 查询openAPI调用quota cgi_path: api的请求地址,例如"/cgi-bin/message/custom/send";不要前缀“https://api.weixin.qq.com” ,也不要漏了"/",否则都会76003的报错 #### Parameters | Name | Type | | :------ | :------ | | `cgi_path` | `string` | #### Returns `Promise`<{ `daily_limit`: `number` ; `used`: `number` ; `remain`: `number` }\> #### Inherited from WeixinOpenAPI.getQuota ___ ### clearQuota ▸ **clearQuota**(): `Promise`<{}\> 清空api的调用quota #### Returns `Promise`<{}\> #### Inherited from WeixinOpenAPI.clearQuota ___ ### getRid ▸ **getRid**(`rid`): `Promise`<{ `request`: { `invoke_time`: `number` ; `cost_in_ms`: `number` ; `request_url`: `string` ; `request_body`: `string` ; `response_body`: `string` } }\> 查询rid信息 #### Parameters | Name | Type | | :------ | :------ | | `rid` | `string` | #### Returns `Promise`<{ `request`: { `invoke_time`: `number` ; `cost_in_ms`: `number` ; `request_url`: `string` ; `request_body`: `string` ; `response_body`: `string` } }\> #### Inherited from WeixinOpenAPI.getRid ## 二维码 ### createTmpQRCode ▸ **createTmpQRCode**(`scene`, `expire?`): `Promise`<{ `ticket`: `string` ; `expire_seconds`: `number` ; `url`: `string` }\> 创建临时二维码 #### Parameters | Name | Type | Default value | Description | | :------ | :------ | :------ | :------ | | `scene` | { `id`: `number` ; `str?`: `undefined` } \| { `id?`: `undefined` ; `str`: `string` } | `undefined` | 场景ID. id: 临时二维码时为32位非0整型. str: 字符串类型,长度限制为164 | | `expire` | `number` | `60` | 过期时间,单位秒。最大不超过2592000(即30天),此字段如果不填,则默认有效期为60秒 | #### Returns `Promise`<{ `ticket`: `string` ; `expire_seconds`: `number` ; `url`: `string` }\> #### Inherited from WeixinQRCode.createTmpQRCode ___ ### createLimitQRCode ▸ **createLimitQRCode**(`sceneId`): `Promise`<{ `ticket`: `string` ; `url`: `string` }\> 创建永久二维码 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `sceneId` | `number` | 场景ID。ID不能大于100000 | #### Returns `Promise`<{ `ticket`: `string` ; `url`: `string` }\> #### Inherited from WeixinQRCode.createLimitQRCode ___ ### showQRCodeURL ▸ **showQRCodeURL**(`ticket`): `string` 生成显示二维码的链接。微信扫描后,可立即进入场景 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `ticket` | `string` | 二维码Ticket | #### Returns `string` 显示二维码的URL地址,通过img标签可以显示出来 #### Inherited from WeixinQRCode.showQRCodeURL ## 用户 ### getUser ▸ **getUser**(`openid`, `lang?`): `Promise`<[`WxUser`](../modules.md#wxuser)\> 获取用户基本信息。可以设置lang,其中zh_CN 简体,zh_TW 繁体,en 英语。默认为en #### Parameters | Name | Type | Default value | | :------ | :------ | :------ | | `openid` | `string` | `undefined` | | `lang` | ``"zh_CN"`` \| ``"zh_TW"`` \| ``"en"`` | `'zh_CN'` | #### Returns `Promise`<[`WxUser`](../modules.md#wxuser)\> #### Inherited from WeixinUser.getUser ___ ### batchGetUsers ▸ **batchGetUsers**(`openidList`, `lang?`): `Promise`<[`WxUser`](../modules.md#wxuser)[]\> 批量获取用户基本信息 #### Parameters | Name | Type | Default value | | :------ | :------ | :------ | | `openidList` | `string`[] | `undefined` | | `lang` | ``"zh_CN"`` \| ``"zh_TW"`` \| ``"en"`` | `'zh_CN'` | #### Returns `Promise`<[`WxUser`](../modules.md#wxuser)[]\> #### Inherited from WeixinUser.batchGetUsers ___ ### getFollowers ▸ **getFollowers**(): `Promise`<`string`[]\> 获取关注者列表 #### Returns `Promise`<`string`[]\> #### Inherited from WeixinUser.getFollowers ___ ### updateRemark ▸ **updateRemark**(`openid`, `remark`): `Promise`<{}\> 设置用户备注名 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `openid` | `string` | 用户的openid | | `remark` | `string` | 新的备注名,长度必须小于30字符 | #### Returns `Promise`<{}\> #### Inherited from WeixinUser.updateRemark ___ ### createTag ▸ **createTag**(`name`): `Promise`<`number`\> 创建标签 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `name` | `string` | 标签名 | #### Returns `Promise`<`number`\> #### Inherited from WeixinUser.createTag ___ ### getTags ▸ **getTags**(): `Promise`<{ `id`: `number` ; `name`: `string` ; `count`: `number` }[]\> 获取公众号已创建的标签 #### Returns `Promise`<{ `id`: `number` ; `name`: `string` ; `count`: `number` }[]\> #### Inherited from WeixinUser.getTags ___ ### updateTag ▸ **updateTag**(`tagid`, `name`): `Promise`<{}\> 编辑标签 #### Parameters | Name | Type | | :------ | :------ | | `tagid` | `number` | | `name` | `string` | #### Returns `Promise`<{}\> #### Inherited from WeixinUser.updateTag ___ ### deleteTag ▸ **deleteTag**(`tagid`): `Promise`<{}\> 删除标签 #### Parameters | Name | Type | | :------ | :------ | | `tagid` | `number` | #### Returns `Promise`<{}\> #### Inherited from WeixinUser.deleteTag ___ ### getUsersFromTag ▸ **getUsersFromTag**(`tagId`): `Promise`<`string`[]\> 获取标签下粉丝列表 #### Parameters | Name | Type | Description | | :------ | :------ | :------ | | `tagId` | `number` | 标签id | #### Returns `Promise`<`string`[]\> #### Inherited from WeixinUser.getUsersFromTag ___ ### batchTagging ▸ **batchTagging**(`opendidList`, `tagid`): `Promise`<{}\> 批量为用户打标签 1. 每次传入的openid列表个数不能超过502. 有粉丝身上的标签数最多20#### Parameters | Name | Type | | :------ | :------ | | `opendidList` | `string`[] | | `tagid` | `number` | #### Returns `Promise`<{}\> #### Inherited from WeixinUser.batchTagging ___ ### batchUnTagging ▸ **batchUnTagging**(`opendidList`, `tagid`): `Promise`<{}\> 批量为用户取消标签 #### Parameters | Name | Type | | :------ | :------ | | `opendidList` | `string`[] | | `tagid` | `number` | #### Returns `Promise`<{}\> #### Inherited from WeixinUser.batchUnTagging