0

我通过 gupshup 创建了一个 viber 机器人。我在win 10中使用IIS服务器运行我的WebForm应用程序。我尝试通过api post方法向我的viberbot发送消息,但c#扼杀了我。(我成功测试了url和参数)

这是我的代码:

protected void viber_msg(String viberid, String strmsg)
{
    var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.gupshup.io/sm/api/bot/mybotname/msg?apikey=mykey");
    httpWebRequest.ContentType = "application/x-www-form-urlencoded";
    httpWebRequest.Method = "POST";

   
    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string json = "context={'botname':'mybotname','channeltype':'viber','contextid':'viberid','contexttype':'p2p'}&message="+strmsg;
        streamWriter.Write(json);
    }
    
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    viber_msg("viberuserID", "This is a message");
}

我得到的错误是“ System.Net.WebException: 'The remote server returned an error: (403) Forbidden.'”也尝试使用 POSTMAN 并"message": "Invalid authentication credentials" 提前获取 Thnx ......

4

1 回答 1

0
protected void viber_msg(String viberid, String message)
{
    var client = new RestClient("https://api.gupshup.io/sm/api/bot/mybot/msg?apikey=myapikey");
    client.Timeout = -1;
    var request = new RestRequest(Method.POST);
    request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
    request.AddParameter("context", "{\"botname\": \"mybot\",\"channeltype\" :\"viber\",\"contextid\": \""+viberid+"\",\"contexttype\": \"p2p\"}");
    request.AddParameter("message", message);
    IRestResponse response = client.Execute(request);
} 

protected void Button1_Click(object sender, EventArgs e)
{
    viber_msg("viberid", "message");
}

}

RestSharp 库!!!

于 2020-10-08T05:58:34.143 回答