Exemple #1
0
        public async void TestSetupSubscription()
        {
            using (var rc = new RestClient(
                       Environment.GetEnvironmentVariable("RINGCENTRAL_CLIENT_ID"),
                       Environment.GetEnvironmentVariable("RINGCENTRAL_CLIENT_SECRET"),
                       Environment.GetEnvironmentVariable("RINGCENTRAL_SERVER_URL")
                       ))
            {
                await rc.Authorize(
                    Environment.GetEnvironmentVariable("RINGCENTRAL_USERNAME"),
                    Environment.GetEnvironmentVariable("RINGCENTRAL_EXTENSION"),
                    Environment.GetEnvironmentVariable("RINGCENTRAL_PASSWORD")
                    );

                var pubNubExtension = new PubNubExtension();
                await rc.InstallExtension(pubNubExtension);

                var eventFilters = new[]
                {
                    "/restapi/v1.0/account/~/extension/~/presence?detailedTelephonyState=true",
                    "/restapi/v1.0/account/~/extension/~/message-store"
                };
                var messages = new List <string>();
                var messageStoreMessageCount = 0;
                var subscription             = await pubNubExtension.Subscribe(eventFilters, message =>
                {
                    messages.Add(message);
                    dynamic jObject = JObject.Parse(message);
                    var eventString = (string)jObject.@event;
                    if (new Regex("/account/\\d+/extension/\\d+/message-store").Match(eventString).Success)
                    {
                        messageStoreMessageCount += 1;
                        var messageEvent          = JsonConvert.DeserializeObject <MessageEvent>(message);
                        Assert.NotNull(messageEvent.uuid);
                        Assert.NotNull(messageEvent.body);
                    }
                });

                var subscriptionInfo = subscription.SubscriptionInfo;
                Assert.NotNull(subscriptionInfo);
                Assert.NotNull(subscription.SubscriptionInfo);
                Assert.Equal(eventFilters.Length, subscriptionInfo.eventFilters.Length);
                await SendSms(rc);

                await Task.Delay(20000);

                Assert.True(messages.Count >= 1);
                Assert.True(messageStoreMessageCount >= 1);
                Assert.Contains(messages, message => message.Contains("message-store"));
                subscriptionInfo = await subscription.Refresh();

                Assert.NotNull(subscriptionInfo);
                Assert.NotNull(subscription.SubscriptionInfo);
                Assert.Equal(eventFilters.Length, subscriptionInfo.eventFilters.Length);
                await subscription.Revoke();

                Assert.Null(subscription.SubscriptionInfo);
            }
        }
        public async void ForwardCall()
        {
            using (var rc = new RestClient(
                       Environment.GetEnvironmentVariable("RINGCENTRAL_CLIENT_ID"),
                       Environment.GetEnvironmentVariable("RINGCENTRAL_CLIENT_SECRET"),
                       Environment.GetEnvironmentVariable("RINGCENTRAL_SERVER_URL")
                       ))
            {
                await rc.Authorize(
                    Environment.GetEnvironmentVariable("RINGCENTRAL_USERNAME"),
                    Environment.GetEnvironmentVariable("RINGCENTRAL_EXTENSION"),
                    Environment.GetEnvironmentVariable("RINGCENTRAL_PASSWORD")
                    );

                var pubNubExtension = new PubNubExtension();
                await rc.InstallExtension(pubNubExtension);

                var eventFilters = new[]
                {
                    "/restapi/v1.0/account/~/extension/~/presence?detailedTelephonyState=true"
                };
                var subscription = await pubNubExtension.Subscribe(eventFilters, async message =>
                {
                    dynamic jObject = JObject.Parse(message);
                    var activeCall  = jObject.body.activeCalls[0];

                    if ((string)activeCall.telephonyStatus == "Ringing")
                    {
                        var telephonySessionId = (string)activeCall.telephonySessionId;
                        var partyId            = (string)activeCall.partyId;
                        if (telephonySessionId != null && partyId != null)
                        {
                            var callParty = await rc.Restapi().Account().Telephony().Sessions(telephonySessionId)
                                            .Parties(partyId)
                                            .Forward().Post(new ForwardTarget
                            {
                                phoneNumber = Environment.GetEnvironmentVariable("RINGCENTRAL_RECEIVER")
                            });
                            Assert.NotNull(callParty);
                        }
                    }
                });

                // await Task.Delay(120000);
            }
        }
        public async void ReuseTokenAfterSubscription()
        {
            using (var rc = new RestClient(
                       Environment.GetEnvironmentVariable("RINGCENTRAL_CLIENT_ID"),
                       Environment.GetEnvironmentVariable("RINGCENTRAL_CLIENT_SECRET"),
                       Environment.GetEnvironmentVariable("RINGCENTRAL_SERVER_URL")
                       ))
            {
                await rc.Authorize(
                    Environment.GetEnvironmentVariable("RINGCENTRAL_USERNAME"),
                    Environment.GetEnvironmentVariable("RINGCENTRAL_EXTENSION"),
                    Environment.GetEnvironmentVariable("RINGCENTRAL_PASSWORD")
                    );

                var pubNubExtension = new PubNubExtension();
                rc.InstallExtension(pubNubExtension);

                var cachedToken = rc.token;

                // use the token to make API call
                rc.token = cachedToken;
                var ext = await rc.Restapi().Account().Extension().Get();

                Assert.NotNull(ext.id);

                // create a subscription
                var subscription = await pubNubExtension.Subscribe(
                    new string[] { "/restapi/v1.0/account/~/extension/~/message-store" },
                    message => { Console.WriteLine(message); });

                // use the token again to make API call
                rc.token = cachedToken;
                ext      = await rc.Restapi().Account().Extension().Get();

                Assert.NotNull(ext.id);
            }
        }