1

クリックアテルを使用してSMSを送信するC#.NETを使用してASP.NETでWebアプリケーションを構築しています。

ClickatellCallBack.aspxというコールバックページを作成して、clickatellからステータスを受信しようとして失敗しました。ページの背後にあるコードは次のとおりです。

public partial class ClickatellCallBack:System.Web.UI.Page
{
protected void Page_Load(object sender、EventArgs e)
{
//QueryStringから値を取得します。
string apiID = Request.QueryString ["api_id"];
string from = Request.QueryString ["from"];
string to = Request.QueryString ["to"];
文字列のタイムスタンプ=Request.QueryString["timestamp"];
string apiMsgId = Request.QueryString ["apiMsgId"];
string cliMsgId = Request.QueryString ["cliMsgId"];
文字列ステータス=Request.QueryString["status"];
string Charge = Request.QueryString ["charge"];

   // Insert the SMS Status values into the database.  
   int smsStatusID = SMSManager.InsertSMSStatus(apiID, from, to,
      timestamp, apiMsgId, cliMsgId, status, charge);  

}
}

基本的に、このページはclickatellから送信されたクエリ文字列値を取得し、それらをデータベーステーブルに挿入します。

次のコールバックURLを登録しました:http ://www.mydomain.com/ClickatellCallBack.aspx with clickatellそしてコールバックタイプを選択しました:HTTP GET

'sendmsg'コマンドで、配信確認とコールバック要求を次のように設定しました:deliv_ack=1およびcallback=3

唯一の問題は、何も起こっていないように見えることです。コールバックURLにclickatellが到達していないようです。

私は何かが足りないのですか?私は何か間違ったことをしていますか?ASP.NETページ以外のものを使用してこのコールバックURLを実装する必要がありますか?私が見逃しているクリックアテル設定はありますか?

どんな助けでも大歓迎です。

よろしく

ウォルター

4

1 に答える 1

2

クイックセンドコマンドではなく、startbatchコマンドを使用してcallbackパラメーターとdeliver_ackパラメーターを配置することで問題を解決しました。これはうまくいくようです。C#.NETバッチを開始する関数内にあるものは次のとおりです。

protected string get_batch_id(string session_id, string message_body)
{
    // Declare a WebClient.
    WebClient client = new WebClient();

    // Add a User Agent Header.
    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR1.0.3705;)");

    // Add the session_id to the Query String.
    client.QueryString.Add("session_id", session_id);

    // Add the template to the Query String.
    client.QueryString.Add("template", message_body);

    // Add the callback to the Query String.
    client.QueryString.Add("callback", "3");

    // Add the deliv_ack to the Query String.
    client.QueryString.Add("deliv_ack", "1");

    // Declare the baseurl.
    string baseurl = "http://api.clickatell.com/http_batch/startbatch";

    // Open the baseurl.
    Stream data = client.OpenRead(baseurl);

    // Declare and instantiate a StreamReader to retrieve the results of executing the startbatch command.
    StreamReader reader = new StreamReader(data);

    // Parse and split the returned string into the returned_strings array.
    string[] returned_strings = reader.ReadToEnd().Split(' ');

    // Retrieve the batch_id from the (second element of the) returned_strings array.
    string batch_id = returned_strings[1].ToString();

    // Close the Stream.
    data.Close();

    // Close the Reader.
    reader.Close();

    // Return the batch_id.
    return (batch_id);
}

ふぅ!

そのため、次の機能を使用してASP.NETで正常にコード化することもできましたC#.NET

  1. 単一の受信者にメッセージを送信します。
  2. 同じメッセージを複数の受信者に送信します。
  3. パーソナライズされたメッセージを1人の受信者に送信します。
  4. パーソナライズされたメッセージを複数の受信者に送信します。

途中で、ASP.NETを使用する際のcliackatellコードサンプルがあまり多くないことに気づきましたC#.NET

于 2010-02-09T11:18:14.713 に答える