В Facebook Ads API есть вызов для размещения рекламы - для этого требуется присоединить изображения к сообщению, задать имя файла в creative_spec, а затем добавить изображение с этим именем в составную часть.
Объект FacebookMedia кажется правильным для этого, но затем я вижу в коде, что только 1 медиа-объект может быть прикреплен к сообщению.Есть ли причина для этого?
Вот некоторый (дрянной, первый проход) код:
dynamic adgroup = new ExpandoObject();
adgroup.method = "ads.createAdGroups";
adgroup.account_id = AdAccount.FbAdAccountId;
adgroup.adgroup_specs = new List<dynamic>();
dynamic adgroup_specs = new ExpandoObject();
adgroup_specs.campaign_id = campaignid;
adgroup_specs.name = ad.campaign_name;
adgroup_specs.status = 1;
adgroup_specs.bid_type = 1;
adgroup_specs.max_bid = ad.max_bid;
adgroup_specs.targeting = (dynamic)(new ExpandoObject());
adgroup_specs.targeting.countries = new List<string>();
adgroup_specs.targeting.countries.Add("US");
adgroup_specs.creative = (dynamic)(new ExpandoObject());
adgroup_specs.creative.title = ad.AdTitleText;
adgroup_specs.creative.body = ad.AdCopyText;
adgroup_specs.creative.link_url = ad.url; // TODO: ASk Bill
adgroup_specs.creative.file_name = ad.ImageId + "_" + ad.ImageName;
var image = dc.Images.Where(r => r.ImageId == ad.ImageId).FirstOrDefault();
adgroup.adgroup_specs.Add(adgroup_specs);
Затем мне нужно прикрепить все изображения, не зная, как это сделать.Они должны быть в сообщении с их именем, поэтому я полагаю, что могу прикрепить их куда угодно:
var images = (from image in dc.Images
where image_ids.Contains(image.ImageId)
select image).Distinct();
var p = adgroups as IDictionary<String, object>;
foreach (var i in images)
{
FacebookMediaObject fmo = new FacebookMediaObject();
fmo.FileName = i.ImageId + "_" + i.Name;
fmo.SetValue(i.ImageData);
fmo.ContentType = "image/png";
p.Add(i.ImageId + "_" + i.Name, fmo);
}
dynamic dresult = FbApp.Post(adgroup);
РЕДАКТИРОВАТЬ: Так что это даже не работало с одним изображением, у меня есть список объявлений и когдаотправленный без изображения, он публикует правильные данные, когда публикуется с изображением, он выглядит следующим образом (смотрите adgroup_specs):
Хост: api.facebook.com Content-Length: 5945 Ожидаемое: 100-продолжение
- 8cdad9aeb95b79c Содержание-расположение: данные формы;name = "method"
ads.createAdGroups --8cdad9aeb95b79c Content-Disposition: form-data;name = "account_id"
106925396 --8cdad9aeb95b79c Content-Disposition: form-data;name = "adgroup_specs"
System.Collections.Generic.List`1 [System.Object] --8cdad9aeb95b79c Content-Disposition: form-data;name = "api_key"
- 8cdad9aeb95b79c Content-Disposition: form-data;name = "format"
json-strings --8cdad9aeb95b79c Content-Disposition: form-data;filename = "667_Screen shot 2011-02-24 at 3.46.29 PM.png" Content-Type: image / png
Преобразует список <> неправильно.Это работает в обычном посте без multipart.Это ошибка?