with WATI and Sinch MessageMedia?
Enables sending of WhatsApp messages using a pre-approved template. See the documentation
Allows updating attributes/tags related to an existing contact. See the documentation
The WATI API allows you to power up your customer engagement by leveraging WhatsApp messaging. With Pipedream's capabilities, you can create serverless workflows that integrate WATI to automate personalized notifications, process inbound messages, and manage contacts. This can help scale your customer service, marketing campaigns, and streamline communications with WhatsApp's wide user base.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
wati: {
type: "app",
app: "wati",
}
},
async run({steps, $}) {
return await axios($, {
url: `${this.wati.$auth.api_endpoint}/api/v1/getContacts`,
headers: {
"Accept": `*/*`,
"Authorization": `${this.wati.$auth.access_token}`,
},
})
},
})
import axios from "axios";
import crypto from 'crypto';
export default defineComponent({
props: {
sinch_messagemedia: {
type: "app",
app: "sinch_messagemedia",
}
},
async run({ steps, $ }) {
// Date header in RFC7231 format
const date = new Date().toUTCString();
// Signing string (No Content-MD5 needed as this is a GET request with no body)
const requestLine = 'GET /v1/messaging/numbers/sender_address/addresses/ HTTP/1.1';
const signingString = `Date: ${date}\n${requestLine}`;
// Creating HMAC-SHA1 hash
const hmac = crypto.createHmac('sha1', this.sinch_messagemedia.$auth.api_secret);
hmac.update(signingString);
// Base64 encode the hash
const signature = hmac.digest('base64');
// Prepare authentication header and make the request
const authHeader = `hmac username="${this.sinch_messagemedia.$auth.api_key}", algorithm="hmac-sha1", headers="Date request-line", signature="${signature}"`;
const response = await axios({
method: 'get',
url: `${this.sinch_messagemedia.$auth.api_url}/v1/messaging/numbers/sender_address/addresses/`,
headers: {
'Date': date,
'Authorization': authHeader,
'Accept': 'application/json'
}
});
return response.data;
},
})