# Cloud Call
Version requirements:
wx-server-sdk
0.4.0
and later; Developer Tools1.02.1904090
and later (RC version download)
Cloud Call is a capability provided by Cloud Base that supports the use of Mini Program APIs based on cloud functions. Application scenarios include:
# I. Server-side Calls
Cloud call must be used via wx-server-sdk
in cloud functions. The access_token
is not required when calling a server API via cloud call in cloud functions. Cloud call initiated in a cloud function triggered via the Mini Program is automatically authenticated by WeChat to directly call open APIs, such as sending template message, after the permission is configured. Here is how it is used:
# 1. Check if cloud call is supported for server APIs
The server API list contains all server APIs. APIs that support cloud call are labeled Cloud Call
by their names. If the cloud call is supported, specific instructions and usage guide are provided in each server API documentation.
# 2. View cloud call guide in API documentation
The documentation of an API that supports cloud call contains independent sections for HTTPS call and cloud call, and both sections include request parameters, return values and examples.
# 3. Declare APIs required for cloud functions
Next, you need to configure cloud call permission. APIs required by each cloud function should be declared by adding the name of an API to be called in the permissions.openapi
field of the config.json
configuration file (no need to create one) under the cloud function directory, otherwise, these APIs cannot be called. The value of the permissions.openapi
field is a string array, which must be the name of the server API to be called. Permission is updated based on the configuration every time when a cloud function is uploaded using the WeChat Developer Tools. It takes 10 minutes for the configuration to take effect. If there is no permission after update, try again in 10 minutes. The following example shows a configuration file of declaring the API for sending template message.
{
"permissions": {
"openapi": [
"templateMessage.send"
]
}
}
# 4. Use cloud call in cloud functions
First, wx-server-sdk
used in cloud function must be 0.4.0
or above. It is recommended to always keep wx-server-sdk
up-to-date and ensure the field of wx-server-sdk
in package.json
under the cloud function directory is latest
. For example, if the dependency is installed locally, execute npm install --save wx-server-sdk@latest
.
Now, you can use cloud call APIs in cloud functions. Cloud call APIs are all under the openapi
object in the wx-server-sdk
module. Each open API class is given a level 2 namespace object (e.g. all APIs for template message are under openapi.templateMessage
) under the openapi
object, where all open methods of this class reside (e.g. the API for sending template message is openapi.templateMessage.send
). All primary and secondary class names and methods of each API can be viewed by the API name. All API names are in the <Class>.<Method>
format. For example, the name of API for sending the template message is templateMessage.send
. Here is an example of sending a template message to yourself:
If you need an example for direct operation, create a project of Cloud Base quick start template in IDE, where an example is given for the cloud call used to send the template message.
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.templateMessage.send({
touser: cloud.getWXContext().OPENID, // Get OPENID via getWXContext
page: 'index',
data: {
keyword1: {
value: '339208499'
},
keyword2: {
value: '2015-01-05, 12:30'
},
keyword3: {
value: 'Tencent WeChat Headquarters'
},
keyword4: {
value: 'No. 397, Xingang Zhonglu, Haizhu District, Guangzhou'
}
},
templateId: 'TEMPLATE_ID',
formId: 'FORMID',
emphasisKeyword: 'keyword1.DATA'
})
// result Structure
// { errCode: 0, errMsg: 'openapi.templateMessage.send:ok' }
return result
} catch (err) {
// Error processing
// err.errCode !== 0
throw err
}
}
# II. Open Data Calls
From base library 2.7.0 and later, if the Mini Program has already connected to Cloud Base, a unique cloudID
matching with the sensitive open data can be obtained from the return value sent via the open data API of the Mini Program. Cloud call can be used to directly get the open data. For details, refer to Directly Get Open Data via Cloud Call.