New blob trigger, emotion api function
#r "Microsoft.WindowsAzure.Storage"
#r "Newtonsoft.Json"
using Microsoft.WindowsAzure.Storage.Blob;
using Newtonsoft.Json;
using System.Text;
public static async void Run(CloudBlockBlob myBlob, string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n ");
var uri = GetUri(myBlob);
var analysis = await GetAnalysis(uri);
log.Info($"results:{analysis}");
}
public static Uri GetUri(CloudBlockBlob blob)
{
SharedAccessBlobPolicy sasPolicy = new SharedAccessBlobPolicy
{
Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write,
SharedAccessStartTime = DateTime.Now.AddMinutes(-15),
SharedAccessExpiryTime = DateTime.Now.AddMinutes(30)
};
var sas=blob.GetSharedAccessSignature(sasPolicy);
Uri uri = new Uri($"{blob.Uri.ToString()}{sas}");
return uri;
}
public static async Task<string> GetAnalysis(Uri uri){
var client = new HttpClient();
var data = JsonConvert.SerializeObject( new{url=uri.ToString()} );
var request = new HttpRequestMessage{
RequestUri = new Uri("https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize?"),
Method = HttpMethod.Post
};
request.Headers.Add("Ocp-Apim-Subscription-Key","10162aaedfa84fb88401d5ba2e41384c");
request.Content = new StringContent(data,Encoding.UTF8,"application/json");
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
return result;
}
{
"bindings": [
{
"name": "myBlob",
"type": "blobTrigger",
"direction": "in",
"path": "images/{name}",
"connection": "kmstorage7_STORAGE"
}
],
"disabled": false
}