Skillsカードのメタデータ
Skillsカードのメタデータ
処理サービスによってファイルのメタデータが特定されたら、アプリケーションはそのデータをBoxに保存されているファイルにメタデータとして書き戻すことができます。
このプロセスには、以下の手順が含まれます。
- スキルカードのメタデータの準備
- ファイルへのメタデータの書き込み
スキルカードのメタデータの準備
Skillsメタデータは、グローバルに利用可能なboxSkillsCards
という名前のメタデータテンプレートを使用します。このテンプレートは、関連ファイルに保存されるJSON構造の特定の形式に従います。
Boxでは現在、4種類のカードがサポートされています。
キーワード | ファイルの横にキーワードのリストを表示します。 | |
タイムライン | 一連のテキスト/画像を表示します。それらの画像がタイムラインに表示される時刻は、クリックすると表示されます。 | |
トランスクリプト | トランスクリプトと、それに対応するタイムスタンプを表示します。 | |
ステータス | ユーザーにステータスを表示します。これは、ファイルの処理中にスキルのステータスをユーザーに通知するために使用できます。 |
ファイルへのメタデータカードの書き込み
ファイルに1つ以上のカードを書き込むには、POST /files/:id/metadata/global/boxSkillsCards
APIを使用して、Box Skill cards
のリストを渡します。
cURL
curl -X POST https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"cards": [{
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
}],
}'
Node
const metadata = {
cards: [{
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
}]
}
client.files.addMetadata('12345', 'global', 'boxSkillsCards', metadata)
.then(metadata => {
// ...
})
Python
metadata = {
cards: [{
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
}]
}
client.file(file_id='12345').metadata(scope='global', template='boxSkillsCards').create(metadata)
Java
BoxFile file = new BoxFile(api, "12345");
Metadata metadata = new Metadata()
file.createMetadata("global", "boxSkillsCards", metadata);
.NET
var metadataValues = new Dictionary<string, object>()
{
cards: [{
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
}]
};
Dictionary<string, object> metadata = await client.MetadataManager
.CreateFileMetadataAsync(fileId: "12345", metadataValues, "global", "boxSkillsCards");
ファイルのメタデータカードの更新
Box Skillカードがすでにファイルに適用されている場合、PUT /files/:id/metadata/global/boxSkillsCards
APIを使用して更新することができます。このAPIは、実行する多数の操作 (op
) を受け取り、各操作を使用すると、特定の位置 (path
) のカードを置き換えることができます。
cURL
curl -X PUT https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json-patch+json' \
-d '[
"op": "replace",
"path": "/cards/0",
"value": {
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
}
]'
Node
const updates = [
{
'op': 'replace',
'path': '/cards/0',
'value': {
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
}
}
]
client.files.updateMetadata('12345', 'global', 'boxSkillsCards', updates)
.then(metadata => {
// ...
})
Python
file_metadata = client.file(file_id='12345').metadata(scope='global', template='boxSkillsCards')
card = {
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
}
updates = file_metadata.start_update()
updates.replace('/cards/0', card)
file_metadata.update(updates)
Java
BoxFile file = new BoxFile(api, "12345");
Metadata metadata = new Metadata()
file.updateMetadata("global", "boxSkillsCards", metadata);
.NET
var card = new Dictionary<string, object>()
{
"type": "skill_card",
"skill_card_type": "keyword",
"skill_card_title": {
"code": "license-plates",
"message": "Licence Plates"
},
"skill": {
"type": "service"
"id": "license-plates-service"
},
"invocation": {
"type": "skill_invocation"
"id": "license-plates-service-123"
},
"entries": {
{ "text": "DD-26-YT" },
{ "text": "DN86 BOX" }
}
};
var updates = new List<BoxMetadataUpdate>()
{
new BoxMetadataUpdate()
{
Op = MetadataUpdateOp.replace,
Path = "/cards/0",
Value = card
}
};
Dictionary<string, object> updatedMetadata = await client.MetadataManager
.UpdateFileMetadataAsync("12345", updates, "global", "boxSkillsCards");