イントロ
独自のカスタマイズやその他の目的でRESTfulAPIとしてBioStar2 New Local APIを使用する場合は、この記事を参照してください。この記事では、C#コンソールアプリケーションによるBioStar 2 New Local APIの基本的な使用法について説明します。
機能
この記事では、以下の機能について説明します。
- Send Email APIにてビジュアルフェイスを登録
- デバイスによるビジュアルフェイスを登録 (FaceStation F2)
この記事では、API関数を呼び出してVisualFaceをBioStar2サーバーのユーザーに登録する方法を確認します。New Local APIを介してVisualFaceを登録する方法は2つあります。
API呼び出し用に作成されたC#プログラムのサンプルコードをご覧ください。ソースコードをコピーして貼り付けて同じ機能を使用できます。
また、RESTfulAPI呼び出しに使用するプログラムであるPostmanを介してAPI関数を呼び出す方法も確認します。
* FaceStationF2をBioStar2に接続してください。
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つの手順があります。このコンソールは、ビジュアルフェイス登録を受け取るユーザーを選択するための追加の手順があります。
- ScanAndRegisterVisualFace: ビジュアルフェイス登録のユーザーを選択します。
- ScanVisualFace: 選択したデバイスを介してビジュアルフェイスをスキャンします。
- 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]
[ビジュアルフェイス登録 : 成功]