问题描述
我尝试过,但仍然显示此错误帖子正文中缺少必需的参数 To 我也是数据。但它显示相同的错误如何解决此问题。
Twilio 代码
import axios from 'axios'
import qs from 'qs';
import * as Twilio from 'twilio';
export function sendOtpForValidUser(user_phone_number: string){
const data = JSON.stringify({
"To":user_phone_number,"Channel":'sms'
})
console.log(data)
return axios.post(`https://verify.twilio.com/v2/Services/${serviceid}/Verifications`,data,{
headers: {
'Authorization': 'Basic ' + Buffer.from(accountSid + ':' + authToken).toString('base64'),'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
},}).then(message => {
console.log('Message',message.status)
var status = message.status
return status
})
.catch(error => {
console.log(error)
var status = error.data
return status
})
}
{
code: 20001,message: 'Missing required parameter To in the post body',more_info: 'https://www.twilio.com/docs/errors/20001',status: 400
}
如何解决这个问题。我改变了这种格式的数据 qs.stringify(),JSON.stringfy() 但它是同样的错误
解决方法
当我尝试使用 Twilio Notify API(但使用 Node-Fetch 而不是 Axios)执行类似操作时,这对我有用。
const fetch = require('node-fetch');
const params = new URLSearchParams();
params.append('Body','Hello from Node-Fetch - It Works!');
params.append('ToBinding','{ "binding_type": "sms","address": "+1407xxxxxx" }');
params.append('ToBinding',"address": "+1601xxxxxx" }');
let headers = {Authorization: 'Basic ' + new Buffer.from(process.env.TWILIO_ACCOUNT_SID + ":" + process.env.TWILIO_AUTH_TOKEN).toString("base64")};
console.log(`To String Output: ${params.toString()}`);
fetch('https://notify.twilio.com/v1/Services/ISxxxx/Notifications',{method: 'POST',headers: headers,body: params})
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.log(err))
,
这里是 Twilio 开发者布道者。
您在此处包含了 Twilio Node 库,但并未使用它。当您已经包含 Twilio 时,您不必使用 axios 来构建此 API 调用。您可以像这样发送新的验证:
import * as Twilio from 'twilio';
const client = Twilio(accountSid,authToken);
export function sendOtpForValidUser(userPhoneNumber: string){
return client.verify.services(serviceSid).verifications.create({
to: userPhoneNumber,channel: 'sms'
})
.then(message => {
console.log('Message',message.status)
var status = message.status
return status
})
.catch(error => {
console.log(error)
var status = error.data
return status
});
}