卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34325本站已运行393

尝试 Twilio Whatsappp api 调用但收到错误 20422

尝试 twilio whatsappp api 调用但收到错误 20422

问题内容

我在使用 twilio Whatsapp api 时遇到错误。

以下是代码:

package main

import (
    "fmt"

    "github.com/twilio/twilio-go"
    api "github.com/twilio/twilio-go/rest/api/v2010"
)

func main() {

    clientParameter := twilio.ClientParams{}
    clientParameter.Username = "AC***********************ba"
    clientParameter.Password = "ce************************27"
    clientParameter.AccountSid = "AC************************ba"

    client := twilio.NewRestClientWithParams(clientParameter)

    params := &api.CreateMessageParams{}
    params.SetContentSid("HT**********************70")
    params.SetMessagingServiceSid("MG******************************0d")
    params.SetFrom("whatsapp:+917*******2")
    params.SetTo("whatsapp:+917********4")

    resp, err := client.Api.CreateMessage(params)
    if err != nil {
        fmt.Println(err.Error())
    } else {
        if resp.Sid != nil {
            fmt.Println(*resp.Sid)
        } else {
            fmt.Println(resp.Sid)
        }
    }
}

我收到的错误是 -

Status: 400 - ApiError 20422: Invalid Parameter (null) More info: https://www.twilio.com/docs/errors/20422

如果尝试通过 Postman,我会遇到同样的错误。


正确答案


错误20422表示不满足这三个条件之一:

  • 缺少指定的 Content-Type 标头字段
  • XML 数据无效或缺失
  • 参数类型或值无效

由于您使用的是 SDK,因此它很可能是第三个要点。您使用 MessagingServiceSidFrom 字段是否有原因?我建议将客户端更新到最新版本并运行此脚本:

package main

import (
    "fmt"
    "log"
    "os"

    "github.com/joho/godotenv"
    "github.com/twilio/twilio-go"
    api "github.com/twilio/twilio-go/rest/api/v2010"
)


func main() {
    err := godotenv.Load()
    if err != nil {
            log.Fatal("Error loading .env file")
    }

    client := twilio.NewRestClient()

    params := &api.CreateMessageParams{}
    params.SetTo("whatsapp:"+os.Getenv("RECIPIENT_PHONE_NUMBER"))
    params.SetFrom(os.Getenv("TWILIO_MESSAGING_SERVICE"))
    params.SetContentSid(os.Getenv("CONTENT_SID"))

    _, err = client.Api.CreateMessage(params)
    if err != nil {
        fmt.Println(err.Error())
    } else {
        fmt.Println("Message sent successfully!")
    }
}

卓越飞翔博客
上一篇: 为什么pion/webrtc生成候选列表没有tcp地址
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏