Methods and systems for placing calls

Information

  • Patent Grant
  • 10791217
  • Patent Number
    10,791,217
  • Date Filed
    Tuesday, September 3, 2019
    5 years ago
  • Date Issued
    Tuesday, September 29, 2020
    4 years ago
  • Inventors
    • Bussey; Stephen (Atlanta, GA, US)
  • Original Assignees
  • Examiners
    • Tieu; Binh Kien
    Agents
    • DLA Piper LLP (US)
Abstract
Systems and methods are disclosed that can create, using a server, a record on a remote server associating a caller's phone number, a provider phone number, and a target phone number. Using a caller's device, a call can be placed to the provider phone number with the caller's phone number. A cloud telephony provider associated with the provider phone number can forward the call to the target phone number. Platform features available using the provider system can be available during the call.
Description
BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 illustrates a system 100 that can be used to place a call to a target, according to aspects of the disclosure.



FIG. 2 illustrates a general method that can be used to place a call to a target, according to aspects of the disclosure.



FIG. 3 illustrates a detailed example of a method that can be used to place a call to a target, according to aspects of the disclosure.







DETAILED DESCRIPTION OF EMBODIMENTS


FIG. 1 illustrates a system 100 (e.g., comprising a cloud call application 170) that can be used to place a call to a target, according to aspects of the disclosure. Referring to FIG. 1, a caller can use a caller device 110 to place a call through a network (e.g., a public switched telephone network (PSTN)) to a target on a target device 130. The caller can use a calling application 150 (e.g., which can be a mobile application on a mobile device). The calling application 150 can communicate (e.g., through the network) with a cloud call application server 170. The calling application 150 can create a record for each call made using the cloud call application server 170. In some embodiments, the records can be stored in a database 140.


For example, in some embodiments, the record can be created, using the cloud call application server 170. The record can associate a caller's device phone number, a provider phone number, and a target phone number. The caller's device can initiate the call, using the calling application 150, to the provider phone number with the caller's device phone number. The cloud telephony provider associated with the provider phone number can forward the call to the target phone number.


In some embodiments, the provider phone number can be used for the caller phone number. In addition, the provider phone number can be a cloud phone number. In some embodiments, calls can be placed via a phone, but can be routed via a cloud communications platform. The caller's device can be a base phone, or a cell phone, a Voice over IP (VoIP) phone, or any combination thereof. The caller's device phone number can be shown as a caller phone number identifying who a call is from. A caller can also change a caller identification phone number identifying who a call is from.



FIG. 2 illustrates a general method that can be used to place a call to a target, according to aspects of the disclosure. In 205, a caller uses a calling application 150 to start placing a call. In some embodiments, the calling application 150 can be a mobile application used on a mobile device (e.g., iPhone, Android, etc.). In some embodiments, the calling application 150 can be a desktop phone application used on a desktop powered device. In 210, the calling application server 160 can create a call record. In 215, the call is placed by the caller's device to the cloud telephony provider using the calling application 150. In 220, the cloud telephony provider 160 calls back to the cloud call application, receiving the target instructions. In 225, the target receives the phone call from the caller and answers the call.



FIG. 3 illustrates a detailed example of a method that can be used to place a call to a target, according to aspects of the disclosure. In this example, the caller is named Steve, and the target is Scott. In 305, Steve wants to call Scott using the calling application 150. Scott's phone number is 111. Steve's cell number is 222, but Steve doesn't want Scott to see the number that he is calling from. Thus, Steve uses the calling application 150, which has a caller ID phone number of 333 and a second number of 444 associated with Steve. The phone number 333 can be Steve's assigned phone number within the company (e.g., SalesLoft). The phone number 444 can be a phone number that Steve's team owns. For example, this can be a number the company (e.g., SalesLoft) uses for the purposes of local dial for the company and/or for the team.


In 310, the calling application 150 can create a call record using the call application server 160. For example, the calling application 150 can send a request to the cloud telephony provider 160 to create a call record. The call record (in this example, we refer to it as R1) can include:

    • target_number=111 (Scott's phone number)
    • user_device_number=222 (Steve's cell number)
    • cloud_number=333 (Steve's assigned phone number in SalesLoft)
    • caller_id=444 (Steve's team's local dial number)
    • record_used_at=NULL
    • expires_at=NOW+5 Minutes


In 315, the call can be made using the calling application 150. Thus, Steve can dials the cloud number (333) using his device (222). In some embodiments, this can happen by prompting the caller (e.g., user) to dial the number. In some embodiments, caller devices can allow a user to place a call without a prompt. The call can simply start.


In 320, the cloud telephony provider 160 can forward the call to the target. Thus, for example, the cloud telephony provider 160 can get a call FROM 222 (Steve's cell) TO 333 (Steve's assigned number). The cloud telephony provider 160 can do a lookup of (FROM=222, TO=333, record_used_at=NULL, not_expired) and find the call record that was just created (R1, caller_id=444). The cloud telephony provider 160 can deactivate this record (R1) to ensure that it is only used one time (R1.record_used_at=NOW). The cloud telephony provider 160 can then forward the call to the target (111) with the provided caller ID (444).


In 325, the target can receive the phone call from the caller and answer the call. Thus, in this example, Scott can receive a phone call FROM=444, and Steve can be connected to Scott when Scott answers his phone. In this example, Scott may not know Steve's cell phone number and/or know that Steve is calling from his cell phone number. In addition, the company (e.g., SalesLoft) dialer features can still be used in the call (Local Dial, Live Call Studio, Call Recording, etc), even though Steve is not calling using the company's phone system. In this way, any and/or all features of a company platform (e.g., a Sales Engagement platform) can be made available via the calling application 150 as though the caller had placed the call directly within the company's call system.


The following are example platform dialer features that can be used. Note that many other types of dialer features can also be used. Local Dial. This can comprise a caller ID based on a target's area code.


Live Call Studio—This can comprise live coaching and participation in calls by approved users.


Call Recording—This can produce a caller-side (user) or full (user+target) call recording of a call.


Call Logging—This can comprise notes, sentiment, disposition, or custom fields, or any combination thereof, and can be recorded by the user after or during a call. Syncing of Call Logs to CRM—The call logs recorded by the user can be written to the user's external CRM (e.g., Salesforce.com, Microsoft Dynamic, etc.).


Voicemail Drop—The user can pre-record voicemails and then select a voicemail to play to the target's answering machine.












Example Pseudocode















 305


  MobileAppDialer.js


   function placeCall(toNumber, callContext) {


    // 305


    // Determine whether custom caller ID is being used


    const callerIdNumber = getCallerIdNumber(toNumber)


    // 305


    // Create the CallRecord on the cloud application server


    const call Record = CallRecord.API.create({


     userDeviceNumber: callContext.userDeviceNumber,


     targetNumber: toNumber,


     cloudNumber: callContext.cloudNumber,


     callerId: callerIdNumber


    })


    // Dial the user's assigned cloud number which will go to the


target number in the end


    // 315


    Device.dialNumber(callRecord.cloudNumber)


   }


   function getCallerIdNumber(toPhoneNumber) {


    if(localDialEnabled) {


     const localDialCallerId = getLocalDialCallerId


     (toPhoneNumber)


     return localDialCallerId.caller_id_number


    } else{


     return assignedPhoneNumber


    }


   }


   // Data Types Involved in Flow


   CallContext(userDeviceNumber, cloudNumber)


   CallRecord(callerId, cloudNumber, targetNumber,


   userDeviceNumber)


 310


  CallRecordCreator:


   // 310


   createRecord(params) {


    database.writeRecord(


     userDeviceNumber: params.userDeviceNumber,


     targetNumber: params.targetNumber,


     cloudNumber: params.cloudNumber,


     callerId: params.callerId


    )


   }


 320


  TelephoneProviderRequest:


   // 320


   handleProviderRequest(params) {


    if callRecord = lookupCallRecord(params.from, params.to) {


     // The flow occurred, so route the inbound call to the target


     markCallRecordUsed(callRecord)


     routeCallToTarget(callRecord.targetNumber,


     callRecord.callerId)


    } else{


     // The flow didn't occur, so route the inbound call as otherwise


     routeInboundCall(params.to)


    }


   }


   lookupCallRecord(from, to) {


     database.callRecords.where(userDeviceNumber: from,


cloudNumber: to).where(expired: false, used: false).first


   }


   markCallRecordUsed(callRecord) {


     database.callRecords.where(id: callRecord.id).update(used:


     true)


   }


   routeCallToTarget(targetNumber, callerId) {


    // The cloud provider instructions are specific to a particular


vendor, but always include what number to call and what number to


call as


    CloudProviderInstructions(


     dialNumber: targetNumber,


     useCallerId: callerId


    )


   }









CONCLUSION

While various embodiments have been described above, it should be understood that they have been presented by way of example and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and detail can be made therein without departing from the spirit and scope. In fact, after reading the above description, it will be apparent to one skilled in the relevant art(s) how to implement alternative embodiments. For example, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.


In addition, it should be understood that any figures which highlight the functionality and advantages are presented for example purposes only. The disclosed methodology and system are each sufficiently flexible and configurable such that they may be utilized in ways other than that shown.


Although the term “at least one” may often be used in the specification, claims and drawings, the terms “a”, “an”, “the”, “said”, etc. also signify “at least one” or “the at least one” in the specification, claims and drawings.


Finally, it is the applicant's intent that only claims that include the express language “means for” or “step for” be interpreted under 35 U.S.C. 112(f). Claims that do not expressly include the phrase “means for” or “step for” are not to be interpreted under 35 U.S.C. 112(f).

Claims
  • 1. A method, comprising: creating, using a cloud call application on a server, a record associating a caller's phone number, a provider phone number, and a target phone number;placing, using a caller's device, a call to the provider phone number with the caller's phone number;forwarding, by a cloud telephony provider associated with the provider phone number, the call to the target phone number; anddeactivating, by the cloud call application, the record to ensure the record is only used one time;wherein platform features available using the provider system are available during the call.
  • 2. The method of claim 1, wherein the provider phone number is a cloud phone number.
  • 3. The method of claim 1, wherein calls are placed via a phone, but are routed via a cloud communications platform.
  • 4. The method of claim 3, wherein the caller's device is a base phone or a cell phone.
  • 5. The method of claim 3, wherein the caller's device is a Voice over IP (VoIP) phone.
  • 6. The method of claim 1, wherein the caller's device phone number is shown as a caller phone number identifying who a call is from.
  • 7. The method of claim 1, wherein a caller can change a caller identification phone number identifying who a call is from.
  • 8. The method of claim 1, wherein the platform features comprise: local dial, live call studio, call recording, call logging, syncing of call logs to CRM, or voicemail drop, or any combination thereof.
  • 9. The method of claim 1, wherein the platform features comprise at least three of: local dial, live call studio, call recording, call logging, syncing of call logs to CRM, or voicemail drop, or any combination thereof.
  • 10. A system, comprising: a processor configured for:creating, using a cloud call application on a server, a record associating a caller's phone number, a provider phone number, and a target phone number;placing, using a caller's device, a call to the provider phone number with the caller's phone number; andforwarding, by a cloud telephony provider associated with the provider phone number, the call to the target phone number;deactivating, by the cloud call application, the record to ensure the record is only used one time;wherein platform features available using the provider system are available during the call.
  • 11. The system of claim 10, wherein the provider phone number is a cloud phone number.
  • 12. The system of claim 10, wherein calls are placed via a phone, but are routed via a cloud communications platform.
  • 13. The system of claim 12, wherein the caller's device is a base phone or a cell phone.
  • 14. The system of claim 12, wherein the caller's device is a Voice over IP (VoIP) phone.
  • 15. The system of claim 10, wherein the caller's device phone number is shown as a caller phone number identifying who a call is from.
  • 16. The system of claim 10, wherein a caller can change a caller identification phone number identifying who a call is from.
  • 17. The system of claim 10, wherein the platform features comprise: local dial, live call studio, call recording, call logging, syncing of call logs to CRM, or voicemail drop, or any combination thereof.
  • 18. The system of claim 10, wherein the platform features comprise at least three of: local dial, live call studio, call recording, call logging, syncing of call logs to CRM, or voicemail drop, or any combination thereof.
US Referenced Citations (40)
Number Name Date Kind
7760865 Awan et al. Jul 2010 B2
8064342 Badger Nov 2011 B2
8631069 Maes Jan 2014 B2
9256695 Willis et al. Feb 2016 B1
9392122 Sall Jul 2016 B2
9699409 Reshef et al. Jul 2017 B1
9992448 Reshef et al. Jun 2018 B2
10218839 Gupta Feb 2019 B2
10325284 Aggarwal et al. Jun 2019 B1
20070206759 Boyanovsky Sep 2007 A1
20090274284 Arsenault Nov 2009 A1
20100135477 Chen Jun 2010 A1
20100205543 Von Werther et al. Aug 2010 A1
20100223389 Ananthanarayanan et al. Sep 2010 A1
20110228921 Singh et al. Sep 2011 A1
20110271210 Jones et al. Nov 2011 A1
20120051267 Ma Mar 2012 A1
20130076853 Diao Mar 2013 A1
20130191719 Underhill et al. Jul 2013 A1
20140006611 Perez Jan 2014 A1
20150036810 Rashid Feb 2015 A1
20160253314 Pottier et al. Sep 2016 A1
20160381215 Goyal Dec 2016 A1
20170257598 Reshef et al. Sep 2017 A1
20170345325 Metts Nov 2017 A1
20180082208 Cormier et al. Mar 2018 A1
20180121828 Keysers et al. May 2018 A1
20180176661 Varndell et al. Jun 2018 A1
20180191901 Aleksin Jul 2018 A1
20180227339 Rodriguez et al. Aug 2018 A1
20180239822 Reshef et al. Aug 2018 A1
20180249122 Reshef et al. Aug 2018 A1
20180268318 Matam et al. Sep 2018 A1
20180330736 Faulkner et al. Nov 2018 A1
20190068390 Gross et al. Feb 2019 A1
20190068526 Xie et al. Feb 2019 A1
20190102846 Loschiavo Apr 2019 A1
20190182183 Hubauer et al. Jun 2019 A1
20190205772 Kohlmeier et al. Jul 2019 A1
20190318743 Reshef et al. Oct 2019 A1
Non-Patent Literature Citations (11)
Entry
WebEx Meeting Center with Collaboration Meeting Rooms (CMR Cloud) User Guide, https://www.cisco.com/c/en/us/td/docs/collaboration/meeting_center/wbs2913/CMR_Cloud_User_Guide.pdf, total 24 pages, Publication Date: Aug. 1, 2014.
Pexip Mobile App for Android Quick Guide, https://docs.pexip.com/files/v8/Pexip_Mobile_App_Android_Quickguide_v8.a.pdf, Total 4 pages, Publication Date: Feb. 2015.
Lync conference invitations in SIP terms, http://blog.greenl.ee/2011/12/15/lync-conference-invitations!, Total 7 pages, Publication Date: Dec. 15, 2011.
RFC4579—Session Initiation Protocol (SIP) Call Control—Conferencing for User Agents, https://datatracker.ietf.org/doc/rfc4579/ , pp. 3, Publication Date: Aug. 2006.
U.S. Appl. No. 15/852,259.
U.S. Appl. No. 16/518,367.
U.S. Appl. No. 16/524,653.
Image File Wrapper of U.S. Appl. No. 16/518,367 electronically captured from PAIR on Jun. 4, 2020 from Apr. 1, 2020 to Jun. 4, 2020.
Image File Wrapper of U.S. Appl. No. 16/524,653 electronically captured from PAIR on Jun. 4, 2020 from Apr. 22, 2020 to Jun. 4, 2020.
Image File Wrapper of U.S. Appl. No. 15/852,259 electronically captured from PAIR on Jun. 4, 2020 from Apr. 2, 2020 to Jun. 4, 2020.
Image File Wrapper of U.S. Appl. No. 16/855,610 electronically captured from PAIR on Jun. 4, 2020.