イントロ

独自のカスタマイズやその他の目的でRESTfulAPIとしてBioStar2 New Local APIを使用する場合は、この記事を参照してください。この記事では、C#コンソールアプリケーションによるBioStar 2 New Local APIの基本的な使用法について説明します。   

 


機能

この記事では、以下の機能について説明します。

  1. Send Email APIにてビジュアルフェイスを登録
  2. デバイスによるビジュアルフェイスを登録 (FaceStation F2)


この記事では、API関数を呼び出してVisualFaceをBioStar2サーバーのユーザーに登録する方法を確認します。New Local APIを介してVisualFaceを登録する方法は2つあります。

 API呼び出し用に作成されたC#プログラムのサンプルコードをご覧ください。ソースコードをコピーして貼り付けて同じ機能を使用できます。

また、RESTfulAPI呼び出しに使用するプログラムであるPostmanを介してAPI関数を呼び出す方法も確認します。


* FaceStationF2をBioStar2に接続してください。 

 [BioStar 2] VisualFaceクレデンシャル情報を登録する方法 

 

 

Part 1. API呼び出しとパラメーター   

 

- ビジュアルフェイススキャン

 

[GET]: /api/devices/547834285/credentials/face?pose_sensitivity=0&nonBlock=true


- ビジュアルフェイス登録 

[PUT]: /api/users/{id}

[パラメーター] 

名称

タイプ

*M/O

説明

バリュー

User/credentials/visualFaces

Array

O

ビジュアルフェイス情報

 

Template_ex_normalized_image

String

O

Base64での画像名

 

Templates

Array

O

“template_ex”, “credential_bin_type”,

“template_ex_ir”

 

Templates/template_ex

String

O

Base64

“5”

Templates/credential_bin_type

String

O

クレデンシャルbinタイプ

 

Templates/credential_ex_ir

String

O

Base64

 

Templates/credential_bin_type

String

O

クレデンシャルbinタイプ

“6”

Flag

String

O

フラグ

“1”

useProfile

String

O

プロファイルとして使用するかどうか

True & False

   * M – 必須, O – オプション

 


Part 2. リクエストボディとレスポンスモデル  

 

- ビジュアルフェイススキャン

[レスポンスモデル]

{

  "credentials": {

    "faces": [

      {

        "raw_image": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...",

        "templates": [

          {

            "template": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe..."

          }

        ],

        "flag": "0"

      }

    ]

  },

  "Response": {

    "code": "1003",

    "link": "https://support.supremainc.com/en/support/home",

    "message": "Success"

  },

  "httpResponseStatus": 200

}


[レスポンス: 失敗]

{

    "Response": {

        "code": "262155",

        "link": "https://support.supremainc.com/en/support/home",

        "message": "not defined"

    }

}


[レスポンス: 成功]

{

    "credentials": {

        "faces": [

            {

                   "template_ex_normalized_image": "/9j/4AAQSkZJRgABAQEASABI… ",

                "templates": [

                    {

                           "template_ex": "AAAAAAEA4gCFAe4AFQE8//7/…",

                           "credential_bin_type": "5"

                    },

                    {

                           "template_ex_ir": "AAAAAAEAHgGPAeIAHAEAAAAASlQ7RU…",

                           "credential_bin_type": "6"

                    }

                ],

                "flag": "1"

            }

        ]

    },

    "Response": {

        "code": "0",

        "link": "https://support.supremainc.com/en/support/home",

        "message": "Success"

    }

}

 

 

- ビジュアルフェイススキャン

[例/パラメーターモデル]

{

       "User": {

           "credentials": {

               "visualFaces": [

                {

                       "template_ex_normalized_image": "/9j/4AAQSkZJRgABAQEASABIAAD/…",

                    "templates": [

                        {

                               "template_ex": "AAAAAAEA+QCAAeMAJwFhAQD/XFVUQ0…",

                               "credential_bin_type": "5"

                        },

                        {

                               "template_ex_ir": "AAAAAAEANAF+AdsAGQEAAAAASlBCRTyDfAA…",

                               "credential_bin_type": "6"

                        }

                    ],

                    "flag": "1",

                    "useProfile": "false"

                }

               ]

           }

    }

}

 

[レスポンスモデル]

{

  "DeviceResponse": {

    "rows": [

      {

        "id": "541530887",

        "code": "65230"

      }

    ],

    "result": "false"

  },

  "Response": {

    "code": "0",

    "link": "https://support.supremainc.com/en/support/home",

    "message": "Success"

  }

}


[レスポンス: 失敗]

{

    "Response": {

        "code": "20",

        "message": "Permission not allowed"

    }

}


[レスポンス: 成功]

{

    "Response": {

        "code": "0",

        "link": "https://support.supremainc.com/en/support/home",

        "message": "Success"

    }

}

 


Part 3. コンソール例

 

ビジュアルフェイスをユーザーに登録するには2つの手順があります。このコンソールは、ビジュアルフェイス登録を受け取るユーザーを選択するための追加の手順があります。

  1. ScanAndRegisterVisualFace: ビジュアルフェイス登録のユーザーを選択します。
  2. ScanVisualFace: 選択したデバイスを介してビジュアルフェイスをスキャンします。
  3. RegisterVisualFaceToUser: スキャンしたビジュアルフェイスを選択したユーザーに登録します。


[ScanAndRegisterVisualFace

static async void ScanAndRegisterVisualFace()

        {

            Console.WriteLine("*****ScanAndRegisterVisualFace Task Started******");

            if (sessionID == null)

            {

                Console.WriteLine("You must log in first!");

                return;

            }

 

            CookieContainer cookieContainer = new CookieContainer();

 

            HttpClientHandler handler = new HttpClientHandler();

            handler.CookieContainer = cookieContainer;

 

               HttpClient client = new HttpClient(handler);

 

            client.DefaultRequestHeaders.Add("bs-session-id", sessionID);

            cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id", sessionID));

            ListUsers();

            Console.WriteLine("Select User ID for Visual Face Registration...");

            string userID = Console.ReadLine();

            //HttpResponseMessage httpResponse = await client.GetAsync("https://127.0.0.1/api/users");

            HttpResponseMessage httpResponse = client.GetAsync("https://127.0.0.1/api/users").Result;

 

 

            if (httpResponse.IsSuccessStatusCode == true)

            {

                string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

                //Console.WriteLine(httpResponseBody);

                Console.WriteLine("Registering VISUAL FACE to the USER(" + userID + ")");

                ScanVisualFace(userID);

 

            }

            else

            {

                Console.WriteLine("Retrieving User List Failed");

                   Console.WriteLine(httpResponse.ToString());

            }

        }

 

[ScanVisualFace]

  • 選択したデバイスを介してビジュアルフェイスをスキャンします。 

static async void ScanVisualFace(string UserID)

        {

            Console.WriteLine("*****ScanVisualFace Task Started*****");

            CookieContainer cookieContainer = new CookieContainer();

 

            HttpClientHandler handler = new HttpClientHandler();

            handler.CookieContainer = cookieContainer;

 

            HttpClient httpClient = new HttpClient(handler);

 

            HttpClient client = new HttpClient(handler);

               httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID);

            cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id", sessionID));

            ListDevices();

            Console.WriteLine("Select Device ID for Visual Face Scanning...(SELECT FaceStation F2...");

            string deviceID = Console.ReadLine();

            string resourceAddress = "https://127.0.0.1/api/devices/" + deviceID + "/credentials/face?pose_sensitivity=0&nonBlock=true";

 

            JavaScriptSerializer serializer = new JavaScriptSerializer();

 

            string payload = "";

               Console.WriteLine(resourceAddress);

            StringContent sc = new StringContent(payload, Encoding.UTF8, "application/json");

            //HttpResponseMessage httpResponse = await httpClient.PutAsync(resourceAddress, sc);

               HttpResponseMessage httpResponse = httpClient.GetAsync(resourceAddress).Result;

 

 

            Console.WriteLine("SCAN YOUR VISUAL FACE with the DEVICE(ID: " + deviceID + ")");

 

            if (httpResponse.IsSuccessStatusCode == true)

            {

                Console.WriteLine("Scan VISUAL FACE Successful.");

                string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

                Console.WriteLine(httpResponseBody);

                dynamic obj = JsonConvert.DeserializeObject(httpResponseBody);

                string template_ex_normalized_image = obj.credentials.faces[0].template_ex_normalized_image;

                string template_ex = obj.credentials.faces[0].templates[0].template_ex;

                string template_ex_ir = obj.credentials.faces[0].templates[1].template_ex_ir;

                string flag = obj.credentials.faces[0].flag;

                   RegisterVisualFaceToUser(UserID, template_ex_normalized_image, template_ex, template_ex_ir, flag);

            }

            else

            {

                Console.WriteLine("Scan VISUAL FACE Failed.");

                   Console.WriteLine(httpResponse.ToString());

            }

        }

 

[RegisterVisualFaceToUser]

  • このメソッドは、「ScanVisualFace」メソッドからテンプレート値を受け取り、それを「template_ex_normalized_image」、「template_ex」、「template_ex_ir」、および「flag」の値に入力します。

static async void RegisterVisualFaceToUser(string UserID, string template_ex_normalized_image, string template_ex, string template_ex_ir, string flag)

        {

            Console.WriteLine("*****RegisterVisualFaceToUser Task Started******");

            if (sessionID == null)

            {

                Console.WriteLine("You must log in first!");

                return;

            }

            CookieContainer cookieContainer = new CookieContainer();

 

            HttpClientHandler handler = new HttpClientHandler();

               handler.CookieContainer = cookieContainer;

 

            HttpClient httpClient = new HttpClient(handler);

 

            HttpClient client = new HttpClient(handler);

               httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID);

            cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id", sessionID));

            Console.WriteLine("Registering VISUAL FACE to USER(" + UserID + ") ...");

 

            string resourceAddress = "https://127.0.0.1/api/users/" + UserID + "";

            string payload = "{\"User\": {\"credentials\": {\"visualFaces\": [{\"template_ex_normalized_image\": \"" + template_ex_normalized_image + "\",\"templates\": [{\"template_ex\": \"" + template_ex + "\",\"credential_bin_type\": \"5\"},{\"template_ex_ir\": \"" + template_ex_ir + "\",\"credential_bin_type\": \"6\"}],\"flag\": \"" + flag + "\",\"useProfile\": \"false\"}]}}}";

            StringContent sc = new StringContent(payload, Encoding.UTF8, "application/json");

            //HttpResponseMessage httpResponse = await httpClient.PutAsync(resourceAddress, sc);

            HttpResponseMessage httpResponse = httpClient.PutAsync(resourceAddress, sc).Result;

 

 

            if (httpResponse.IsSuccessStatusCode == true)

               {

                   Console.WriteLine(httpResponse.ToString());

                string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

                Console.WriteLine("***** VISUAL FACE is now registered to " + " User " + UserID + " *****");

            }

            else

            {

                Console.WriteLine("Failed to Register VISUAL FACE to User(" + UserID + ")");

                   Console.WriteLine(httpResponse.ToString());

            }

 

        }

 

[ユーザー&端末選択] 

入力: User ID, Device ID

텍스트이(가) 표시된 사진 
자동 생성된 설명 


[ビジュアルフェイスをスキャン] 

텍스트이(가) 표시된 사진 
자동 생성된 설명


[ビジュアルフェイス登録成功]

텍스트이(가) 표시된 사진 
자동 생성된 설명

 

 

Part 4. Postmanにてビジュアルフェイス登録

 

[FaceStation F2にてビジュアルフェイススキャン : Request] 

*接続されているFaceStationF2のIDを入力してください。

텍스트, 스크린샷, 모니터, 화면이(가) 표시된 사진 
자동 생성된 설명

 

[FaceStation F2にてビジュアルフェイススキャン : Response Body: 成功] 

텍스트이(가) 표시된 사진 
자동 생성된 설명

 

[ビジュアルフェイス登録: Request] 

텍스트이(가) 표시된 사진 
자동 생성된 설명


[ビジュアルフェイス登録 : 成功] 

텍스트, 실내이(가) 표시된 사진 
자동 생성된 설명