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); } }