すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:行動データプッシュのデモコード

最終更新日:Dec 28, 2024

環境変数の設定

ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定します。

重要
  • Alibaba CloudアカウントのAccessKeyペアを使用して、すべてのAPI操作にアクセスできます。API操作の呼び出しや日常のO&Mの実行には、Resource Access Management (RAM) ユーザーを使用することをお勧めします。RAMユーザーの使用方法については、RAMユーザーの作成 を参照してください。

  • AccessKeyペアの作成方法については、AccessKeyペアの作成 を参照してください。

  • RAMユーザーのAccessKeyペアを使用する場合は、Alibaba Cloudアカウントを使用して、必要な権限がAliyunServiceRoleForOpenSearchロールに付与されていることを確認してください。詳細については、AliyunServiceRoleForOpenSearch および アクセス許可ルール を参照してください。

  • プロジェクトコードなど、他の人が簡単にアクセスできる資料にAccessKeyペアを含めないことをお勧めします。そうしないと、AccessKeyペアが漏洩し、アカウント内のリソースが安全でなくなる可能性があります。

  • Linux および macOS

    次のコマンドを実行します。<access_key_id> および <access_key_secret> を、使用するRAMユーザーのAccessKey IDとAccessKeyシークレットに置き換えます。

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> 
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
  • Windows

    1. 環境変数ファイルを作成し、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数をファイルに追加し、環境変数をAccessKey IDとAccessKeyシークレットに設定します。

    2. AccessKeyペアを有効にするには、Windowsを再起動します。

依存関係の追加

https://www.nuget.org/packages で依存関係パッケージをダウンロードします。

dotnet add package AlibabaCloud.TeaUtil --version  0.1.5
dotnet add package AlibabaCloud.OpenSearchUtil --version 1.0.2
dotnet add package Aliyun.Credentials --version  1.2.1
dotnet add package Tea --version 0.4.0

サンプルコード

次のサンプルコードは、C# 用 SDK を使用して行動データをプッシュする方法を示しています。

using System;
using System.Collections.Generic;
using AlibabaCloud.TeaUtil.Models;
using Tea;

namespace ConsoleApp2
{
    internal class Program
    {
        public static Dictionary<string, object> behaviorBulk(Client opensearchClient, string appName,
            string collectionName, List<object> docContent, Dictionary<string, string> header, RuntimeOptions runTime)
        {
            string pathName = "/v3/openapi/app-groups/" + appName + "/data-collections/" + collectionName +
                              "/data-collection-type/BEHAVIOR/actions/bulk";
            try
            {
                return opensearchClient._request("POST", pathName, null, header, docContent, runTime);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }


        private static void Main(string[] args)
        {
            var runtime = new RuntimeOptions
            {
                ConnectTimeout = 5000,
                ReadTimeout = 10000,
                MaxAttempts = 0,
                Autoretry = false,
                IgnoreSSL = false,
                MaxIdleConns = 50
            };

            var config = new Config
            {
                // OpenSearch API のエンドポイントを指定します。エンドポイントは OpenSearch コンソールから取得できます。
                Endpoint = "opensearch-cn-hangzhou.aliyuncs.com",

                // リクエストプロトコルを指定します。有効な値: HTTPS および HTTP。
                Protocol = "HTTPS",

                // AccessKey ペアを指定します。
                // 環境変数から AccessKey ID と AccessKey シークレットを取得します。
                // このコードを実行する前に、環境変数を設定する必要があります。詳細については、このトピックの「環境変数の設定」セクションを参照してください。
                AccessKeyId =  System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                AccessKeySecret = System.Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),

                // 認証方法を指定します。デフォルト値: access_key。sts の値は、Resource Access Management (RAM) と Security Token Service (STS) に基づく認証を示します。
                // 有効な値: sts および access_key。
                Type = "access_key",

                // RAM および STS に基づく認証を使用する場合は、SecurityToken パラメーターを指定する必要があります。Alibaba Cloud RAM の AssumeRole オペレーションを呼び出して、STS トークンを取得できます。
                SecurityToken = "",
            };

            // OpenSearch クライアントインスタンスを作成します。
            var openSearch = new Client(config);

            // データをプッシュするアプリケーションの名前を指定します。
            var appName = "appName";

            // HTTP ヘッダーをカスタマイズします。
            var header = new Dictionary<string, string>();

            // --------------- 行動ログをプッシュする ---------------


            // item_id: 検索結果で返される主キーの ID。
            string item_id = "358713";

            // ops_request_misc: 検索結果で返されるリクエストのその他の情報。
            string ops_request_misc =
                "%7B%22request%5Fid%22%3A%22161777635816780357273903%22%2C%22scm%22%3A%2220140713.130149759..%22%7D";

            // bhv_type: 行動データのイベントタイプ。有効な値:
            // cart: 商品をショッピングカートに追加します。
            // collect: 商品をお気に入りに追加します。
            // like: 商品にいいね!をします。
            // comment: 商品にコメントを投稿します。
            // buy: 商品を購入します。
            // click: 商品をクリックまたは表示します。
            string bhv_type = "click";

            // request_id: 検索結果で返されるリクエスト ID。
            string request_id = "161777635816780357273903";

            // reach_time: サーバーがデータを受信した時刻。値は秒単位の UNIX タイムスタンプです。
            string reach_time = "1709708439";

            // user_id: リクエストを送信したユーザーの一意の ID。
            // * ほとんどの場合、ID はログオンしているユーザーの ID です。
            // * ユーザーが PC クライアントからリクエストを送信し、ログオンしていない場合、ID は Cookie ID です。
            string user_id = "a7a0d37c824b659f36a5b9e3b819fcdd";

            List<object> behaviorDocs = new List<object>();
            Dictionary<string, object> behaviorDoc = new Dictionary<string, object>();

            Dictionary<string, object> behaviorDocFields = new Dictionary<string, object>()
            {
                {"item_id", item_id},
                {"sdk_type", "opensearch_sdk"},
                {"sdk_version", "<sdk_version>"}, // OpenSearch SDK for C# のバージョン番号。
                {"trace_id", "ALIBABA"}, // サービスプロバイダー。
                {"trace_info", ops_request_misc},
                {"bhv_type", bhv_type},
                {"item_type", "item"},
                {"rn", request_id},
                {"biz_id", "<biz_id>"}, // モバイルアプリケーションまたはアプリケーションクライアントがビジネスを区別するために使用する数値 ID。このパラメーターは、OpenSearch アプリケーションおよび Artificial Intelligence Recommendation (AIRec) インスタンスに関連付けることができます。
                {"reach_time", reach_time},
                {"user_id", user_id}
            };

            behaviorDoc.Add("cmd", "ADD");
            behaviorDoc.Add("fields", behaviorDocFields);

            behaviorDocs.Add(behaviorDoc);
            try
            {
                behaviorBulk(openSearch, appName, appName, behaviorDocs, header, runtime);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
    }
}
説明

詳細については、収集したデータのプッシュ を参照してください。