コード例 #1
0
        public async Task <NotificationResultEN> PushTopupRequest(string pPersonEmail, string pRequester, string pAmount)
        {
            NotificationResultEN operationResult = new NotificationResultEN();

            operationResult.Platform    = "ANDROID";
            operationResult.Result      = false;
            operationResult.ServiceName = "Engagement";

            try
            {
                var credentials = await ApplicationTokenProvider.LoginSilentAsync(Constants.TENANT_ID, Constants.CLIENT_ID, Constants.CLIENT_SECRET);

                engagementClient = new EngagementManagementClient(credentials)
                {
                    SubscriptionId = Constants.SUBSCRIPTION_ID
                };

                engagementClient.ResourceGroupName = Constants.RESOURCE_GROUP;
                engagementClient.AppCollection     = Constants.APP_COLLECTION_NAME;
                engagementClient.AppName           = Constants.APP_RESOURCE_NAME_ANDROID;

                Device userDevice = await engagementClient.Devices.GetByUserIdAsync(pPersonEmail);

                Campaign campaign = new Campaign();
                campaign.Type                  = "only_notif";
                campaign.DeliveryTime          = "any";
                campaign.PushMode              = "manual";
                campaign.NotificationType      = "system";
                campaign.NotificationCloseable = true;
                campaign.NotificationTitle     = "¡Nueva solicitud de recarga!";
                campaign.NotificationMessage   = "Hola ${userFirstName}, el número: " + pRequester + " te ha pedido una recarga de " + pAmount + ". Revisa el listado de solicitudes de recarga.";

                List <string> devices = new List <string>();
                devices.Add(userDevice.DeviceId);

                CampaignPushParameters parameters = new CampaignPushParameters(devices, campaign);
                CampaignPushResult     pushResult = await engagementClient.Campaigns.PushAsync(CampaignKinds.Announcements, Constants.TopupRequestCampaign, parameters);

                if (pushResult.InvalidDeviceIds.Count <= 0)
                {
                    //Success
                    operationResult.CodeResult = "Success";
                    operationResult.Result     = true;
                }
            }
            catch (ApiErrorException apiEx)
            {
                if (String.Equals(apiEx.Body.Error.Code, "Conflict"))
                {
                    operationResult.CodeResult = "conflict";
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
            }

            return(operationResult);
        }
コード例 #2
0
        public async Task <NotificationResultEN> CreateMassiveCampaign(CampaignEN pCampaignContent)
        {
            NotificationResultEN operationResult = new NotificationResultEN();

            operationResult.Platform    = "ANDROID";
            operationResult.Result      = false;
            operationResult.ServiceName = "Engagement";

            int engagementCampaignID = 0;

            try
            {
                var credentials = await ApplicationTokenProvider.LoginSilentAsync(Constants.TENANT_ID, Constants.CLIENT_ID, Constants.CLIENT_SECRET);

                engagementClient = new EngagementManagementClient(credentials)
                {
                    SubscriptionId = Constants.SUBSCRIPTION_ID
                };

                engagementClient.ResourceGroupName = Constants.RESOURCE_GROUP;
                engagementClient.AppCollection     = Constants.APP_COLLECTION_NAME;
                engagementClient.AppName           = Constants.APP_RESOURCE_NAME_ANDROID;

                #region Campaign Audience
                //Campaign audience
                CampaignAudience audience = new CampaignAudience();

                if (YVRMassiveTestModeActive())
                {
                    string userTest = ConfigurationManager.AppSettings["Engagement_SingleUserTest"].ToString();

                    Dictionary <string, Criterion> stringTagCriteria = new Dictionary <string, Criterion>();
                    stringTagCriteria.Add("StringTag", new StringTagCriterion("userid", userTest));
                    audience.Expression = "StringTag";
                    audience.Criteria   = stringTagCriteria;
                }
                else
                {
                    Dictionary <string, Criterion> locationCriteria = new Dictionary <string, Criterion>();
                    locationCriteria.Add("CarrierCountry", new CarrierCountryCriterion(pCampaignContent.CountryISO2Code));
                    audience.Expression = "CarrierCountry";
                    audience.Criteria   = locationCriteria;
                }
                #endregion

                NotificationOptions notificationOptions = new NotificationOptions();
                notificationOptions.BigPicture = (pCampaignContent.ImageURL != null) ? pCampaignContent.ImageURL : null;


                Campaign campaigne = new Campaign(
                    name: pCampaignContent.Title,
                    notificationTitle: pCampaignContent.NotificationTitle,
                    notificationMessage: pCampaignContent.NotificationMessage,
                    type: "text/plain",
                    deliveryTime: "any",
                    notificationType: "system",
                    pushMode: "one-shot",
                    title: pCampaignContent.NotificationTitle,
                    body: pCampaignContent.NotificationMessage,
                    actionButtonText: "ACEPTAR",
                    notificationOptions: (pCampaignContent.ImageURL != null) ? notificationOptions : null, //If imageURL is null or empty, sets an object's null value
                    audience: audience);

                CampaignStateResult campaignResultState = await engagementClient.Campaigns.CreateAsync(CampaignKinds.Announcements, campaigne);

                if (String.Equals(campaignResultState.State, "draft"))
                {
                    engagementCampaignID = campaignResultState.Id;

                    var campaignStatus = await engagementClient.Campaigns.ActivateAsync(CampaignKinds.Announcements, engagementCampaignID);

                    operationResult.CodeResult = campaignStatus.State;

                    if (!String.Equals(campaignStatus.State, "scheduled") || !String.Equals(campaignStatus.State, "in-progress"))
                    {
                        operationResult.Result = true;
                    }
                }
            }
            catch (ApiErrorException apiEx)
            {
                if (String.Equals(apiEx.Body.Error.Code, "Conflict"))
                {
                    operationResult.CodeResult = "conflict";
                }

                EventViewerLoggerSVC.LogError("CreateMassiveCampaign: " + apiEx.Message);
            }
            catch (Exception ex)
            {
                operationResult.CodeResult = "error";
                Console.WriteLine(ex.InnerException);
                EventViewerLoggerSVC.LogError("CreateMassiveCampaign: " + ex.Message);
            }

            return(operationResult);
        }
コード例 #3
0
        public async Task <NotificationResultEN> PushDepositNotification(CampaignEN pCampaign, string pUserEmail, string pFirstName, string pContent)
        {
            NotificationResultEN operationResult = new NotificationResultEN();

            operationResult.Platform    = "ANDROID";
            operationResult.Result      = false;
            operationResult.ServiceName = "Engagement";
            int campaignID = Constants.DepositConfCampaign;

            try
            {
                var credentials = await ApplicationTokenProvider.LoginSilentAsync(Constants.TENANT_ID, Constants.CLIENT_ID, Constants.CLIENT_SECRET);

                engagementClient = new EngagementManagementClient(credentials)
                {
                    SubscriptionId = Constants.SUBSCRIPTION_ID
                };

                engagementClient.ResourceGroupName = Constants.RESOURCE_GROUP;
                engagementClient.AppCollection     = Constants.APP_COLLECTION_NAME;
                engagementClient.AppName           = Constants.APP_RESOURCE_NAME_ANDROID;


                string userIdentifier = (!YVRSingleTestModeActive()) ? pUserEmail : ConfigurationManager.AppSettings["Engagement_SingleUserTest"].ToString();

                Device userDevice = await engagementClient.Devices.GetByUserIdAsync(userIdentifier);

                Campaign campaign = new Campaign();
                campaign.Type                  = "text/plain";
                campaign.DeliveryTime          = "any";
                campaign.PushMode              = "manual";
                campaign.NotificationType      = "system";
                campaign.NotificationCloseable = true;
                campaign.NotificationTitle     = pCampaign.NotificationTitle;
                campaign.NotificationMessage   = String.Format("Hola {0}, tu deposito fue validado de forma exitosa, haz click aquí para más detalles.", pFirstName);
                campaign.Title                 = pCampaign.Title;
                campaign.Body                  = pContent;
                campaign.ActionButtonText      = "ACEPTAR";


                List <string> devices = new List <string>();
                devices.Add(userDevice.DeviceId);

                CampaignPushParameters parameters = new CampaignPushParameters(devices, campaign);
                CampaignPushResult     pushResult = await engagementClient.Campaigns.PushAsync(CampaignKinds.Announcements, campaignID, parameters);

                if (pushResult.InvalidDeviceIds.Count <= 0)
                {
                    //Success
                    operationResult.Result = true;
                }
            }
            catch (ApiErrorException apiEx)
            {
                if (String.Equals(apiEx.Body.Error.Code, "Conflict"))
                {
                    operationResult.CodeResult = "conflict";
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
            }

            return(operationResult);
        }