示例#1
0
        public static async Task AddNewOffice365Contact([QueueTrigger("scnewgraphcontact", Connection = "AzureWebJobsStorage")]
                                                        FullCardInfoTable myQueueItem,
                                                        ILogger log)
        {
            var config = LoadAppSettings();

            if (null == config)
            {
                log.LogInformation("Missing or invalid local.settings.json file.");
                return;
            }

            GraphServiceClient graphClient = GetAuthenticatedGraphClient(config);

            try
            {
                if (graphClient != null)
                {
                    var    fullname    = myQueueItem.Info.Name.ToString();
                    var    tmpFullName = fullname.Split(new char[] { ' ' });
                    var    fn          = tmpFullName[0];
                    var    ln          = tmpFullName[1];
                    string newLeadRaw  = JsonConvert.SerializeObject(myQueueItem);

                    var businessPhonesList = new List <String>();
                    businessPhonesList.Add(myQueueItem.Info.Phone?.ToString());
                    var emailAddresses = new EmailAddress
                    {
                        Address = myQueueItem.Info.Email?.ToString(),
                        Name    = myQueueItem.Info.Name?.ToString(),
                    };
                    var bizAddresses = new PhysicalAddress
                    {
                        City            = "ToDo Item",
                        CountryOrRegion = "US",
                        PostalCode      = "0000",
                        State           = "Md",
                        Street          = "ToDoItem"
                    };
                    var emailAddressesList = new List <EmailAddress>();
                    emailAddressesList.Add(emailAddresses);

                    var contact = new Contact
                    {
                        CompanyName = myQueueItem.Info.Company?.ToString(),
                        //BusinessAddress = bizAddresses,
                        JobTitle = myQueueItem.Info.Title?.ToString(),
                        //Manager = "Dan Holme",
                        //NickName = "Bill",
                        GivenName      = fn,
                        Surname        = ln,
                        PersonalNotes  = newLeadRaw,
                        EmailAddresses = emailAddressesList,
                        BusinessPhones = businessPhonesList,
                    };
                    //graphClient.Me.Contacts
                    var NewlyCreatedContact = await graphClient.Users["65926cde-172b-47fd-948c-bd734718900f"].Contacts
                                              .Request()
                                              .AddAsync(contact);
                    string newContact = JsonConvert.SerializeObject(NewlyCreatedContact);
                    Console.WriteLine($"Added Contact: {newContact}");
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public static void Run([QueueTrigger("scnewmailchimpsub", Connection = "AzureWebJobsStorage")]
                               FullCardInfoTable myQueueItem,
                               ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");

            var method = Environment.GetEnvironmentVariable("CartWiselyMailChimpListId");;
            var key    = Environment.GetEnvironmentVariable("CartWiselyMailChimpKey");;

            var fullname    = myQueueItem.Info.Name.ToString();
            var tmpFullName = fullname.Split(new char[] { ' ' });
            var fn          = tmpFullName[0];
            var ln          = tmpFullName[1];

            MailChimpSub subscribeRequest = new MailChimpSub()
            {
                EmailAddress = myQueueItem.Info.Email,
                Status       = "subscribed",
                MergeFields  = new MergeFields()
                {
                    Fname = fn,
                    Lname = ln
                }
            };

            string payload = JsonConvert.SerializeObject(subscribeRequest);

            log.LogInformation($"Working on Payload: {payload}");
            var endpoint = String.Format("https://{0}.api.mailchimp.com/3.0/{1}", "us20", method);

            byte[]      dataStream   = Encoding.UTF8.GetBytes(payload);
            var         responsetext = string.Empty;
            WebRequest  request      = HttpWebRequest.Create(endpoint);
            WebResponse response     = null;

            try
            {
                request.ContentType = "application/json";
                SetBasicAuthHeader(request, "anystring", key);  // BASIC AUTH
                request.Method        = "POST";
                request.ContentLength = dataStream.Length;
                Stream newstream = request.GetRequestStream();

                newstream.Write(dataStream, 0, dataStream.Length);
                newstream.Close();

                response = request.GetResponse();

                // get the result
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    JsonSerializer json    = new JsonSerializer();
                    JObject        content = JObject.Parse(reader.ReadToEnd());

                    responsetext = reader.ReadToEnd();
                }

                response.Close();
            }

            catch (WebException ex)
            {
                using (var sr = new StreamReader(response.GetResponseStream()))
                {
                    responsetext = sr.ReadToEnd();
                }
                log.LogInformation($"Error is {ex.ToString()}");
            }
        }