`Patent Owner Voip-Pal.com Inc.
`By: Kerry Taylor
`John M. Carson
`KNOBBE, MARTENS, OLSON & BEAR, LLP
`2040 Main Street, 14th Floor
`Irvine, CA 92614
`Tel.: (858) 707-4000
`Fax: (858) 707-4001
`Email:
`BoxDigifonica@knobbe.com
`
`
`
`UNITED STATES PATENT AND TRADEMARK OFFICE
`
`
`BEFORE THE PATENT TRIAL AND APPEAL BOARD
`
`APPLE INC.
`
`Petitioner,
`
`v.
`
`Filed: February 10, 2017
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`VOIP-PAL.COM, INC.,
`
`Patent Owner
`
`
`
`
`Case No. IPR2016-01201
`U.S. Patent 8,542,815
`
`
`
`
`
`
`
`
`
`
`
`
`
`PATENT OWNER RESPONSE TO PETITION
`
`
`
`
`Voip-Pal Ex. 2002
`IPR2017-01399
`
`
`
`
`
`I.
`
`II.
`
`TABLE OF CONTENTS
`
`Page No.
`
`INTRODUCTION ......................................................................................... 1
`
`ARGUMENT ................................................................................................. 4
`
`A.
`
`CHU ’366 IS NOT PRIOR ART UNDER PRE-AIA 35
`U.S.C. 102(e) ....................................................................................... 4
`
`B.
`
`C.
`
`1.
`
`2.
`
`3.
`
`4.
`
`Digifonica’s RBR Software ...................................................... 5
`
`Digifonica Release of RBR Version 361 ................................ 31
`
`The Smart 421 Engagement .................................................... 32
`
`Inventor and Employee Testimony ......................................... 35
`
`CHEN IS NOT PRIOR ART UNDER PRE-AIA 35 U.S.C.
`102(e) ................................................................................................. 38
`
`PETITIONER FURTHER FAILS TO ESTABLISH THAT
`THE CHALLENGED CLAIMS ARE OBVIOUS ........................... 39
`
`1.
`
`2.
`
`CLAIMED SUBJECT MATTER ........................................... 39
`
`OVERVIEW OF CITED ART ............................................... 41
`
`a.
`
`b.
`
`c.
`
`Overview of Chu ’684 .................................................. 41
`
`Overview of Chu ’366 .................................................. 43
`
`Overview of Chen ......................................................... 44
`
`D.
`
`PETITIONER’S COMBINATIONS FAIL TO PROVIDE
`CLAIM STEPS [1D], [27D], [28D-E], OR [54B-C], [74B-
`C], [93B-C] ........................................................................................ 46
`
`1.
`
`The proposed combinations fail to provide steps [1d],
`[27d], [28d-e], or [54b-c], [74b-c], or [93b-c] ........................ 46
`
`-i-
`
`
`
`TABLE OF CONTENTS
`(cont’d)
`
`Page No.
`
`2.
`
`3.
`
`A PHOSITA would not follow the order of steps set
`forth in the Petition to combine the teachings of the
`references. ............................................................................... 50
`
`Petitioner fails to identify any equivalent structure in
`the references corresponding to the “means for
`classifying” or “means for producing” in steps [28d-
`e], [93b-c] ................................................................................ 57
`
`E.
`
`PETITIONER’S PROPOSED COMBINATIONS FAIL TO
`LOCATE ATTRIBUTES ASSOCIATED WITH THE
`CALLER AS RECITED IN CLAIMS [1B], [27B], [28B],
`[74A], and [93A] ............................................................................... 59
`
`1.
`
`2.
`
`The Petition fundamentally misinterpreted the dial
`plans of Chu ‘684 as being user-specific instead of
`enterprise-specific ................................................................... 59
`
`Chu ‘684’s “dial plan” is enterprise-specific, not
`user-specific, which undercuts Petitioner’s
`obviousness theories ............................................................... 60
`
`a.
`
`b.
`
`c.
`
`Consulting an enterprise “dial plan” in Chu
`‘684 is distinct from “locating a caller dialing
`profile” as recited in claims [1b], [27b], [28b] ............. 61
`
`A single “dial plan” is not a plurality of
`“profiles” for “respective” users as recited in
`claims [74a] and [93a] .................................................. 62
`
`Chu ‘684’s enterprise “dial plan” cannot be
`combined with individualized profiles ......................... 63
`
`F.
`
`PETITIONER FAILS TO ARTICULATE A PROPER
`REASON TO COMBINE AND OVERLOOKS WHY THE
`COMBINATIONS ARE UNDESIRABLE ...................................... 64
`
`-ii-
`
`
`
`TABLE OF CONTENTS
`(cont’d)
`
`Page No.
`
`1.
`
`2.
`
`3.
`
`No articulated reasoning for reason to combine ..................... 64
`
`No reason to reformat numbers in Chu ‘684 .......................... 66
`
`Adding individual user-specific dialing rules in a
`PBX is irreconcilable with an enterprise “dial plan” .............. 67
`
`III. CONCLUSION ............................................................................................ 69
`
`
`
`
`
`
`
`-iii-
`
`
`
`TABLE OF AUTHORITIES
`
`Page No(s).
`
`Eaton v. Evans,
`204 F.3d 1094 (Fed. Cir. 2000) ...................................................................... 4, 38
`
`Google, Inc. v. EVERYMD.COM LLC,
`IPR2014-00347, Paper 9 (May 22, 2014) ........................................................... 58
`
`In re Gordon,
`733 F.2d 900 (Fed. Cir. 1984) ............................................................................ 51
`
`KSR Int’l. Co. v. Teleflex, Inc.,
`550 U.S. 398 (2007) ............................................................................................ 64
`
`In re NuVasive, Inc.
`842 F.3d 1376 ............................................................................................... 64, 65
`
`In re Ratti,
`270 F.2d 810, 123 USPQ 349 (CCPA 1959) ...................................................... 63
`
`Valeo N. Am., Inc. v. Magna Elec., Inc.,
`IPR2014-01206, Paper 13 (Dec. 23, 2014)......................................................... 58
`
`OTHER AUTHORITIES
`
`35 U.S.C. § 102 .......................................................................................... 3, 4, 37, 38
`
`35 U.S.C. § 112 ........................................................................................................ 57
`
`35 U.S.C. § 312 ........................................................................................................ 58
`
`35 U.S.C. § 316 .......................................................................................................... 3
`
`37 C.F.R. § 42.22 ..................................................................................................... 58
`
`37 C.F.R. § 42.104 ................................................................................................... 58
`
`
`
`
`
`-iv-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`Patent Owner Voip-Pal.com, Inc. (“Voip-Pal”) respectfully submits this
`
`Response to the Petition for Inter Partes Review of U.S. 8,542,815 (the ’815
`
`Patent) (Paper 1) by Apple Inc. (“Apple”).
`
`I.
`Digifonica, a real party-in-interest to this proceeding and wholly owned
`
`INTRODUCTION
`
`subsidiary of Patent Owner Voip-Pal, starting in 2004 employed top professionals
`
`including three Ph.D.’s with various engineering backgrounds, to develop
`
`innovative software solutions for communications, which, by the mid-2000s it had
`
`implemented in four nodes across three geographic regions. Digifonica’s R&D
`
`efforts led to several patents, including the ‘815 Patent.
`
`Prior to the ‘815 Patent, private branch exchange (PBX) systems typically
`
`enabled users to call destinations internal to the PBX by dialing an extension (i.e.,
`
`“private number”) and destinations external to the PBX on the public switched
`
`telephone network (PSTN) by dialing a “public number.” Such PBX systems
`
`relied on a user-specified classification of the dialed number to interpret the
`
`number and route the call. For example, a user placing a call to the public network
`
`dialed a predefined prefix such as “9” to indicate that subsequent digits were to be
`
`interpreted as a public PSTN number. If no prefix was dialed, the dialed digits
`
`were to be interpreted as a private PBX extension. The number alone, as dialed,
`
`-1-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`dictated how the call was routed. Thus, the user made an affirmative decision
`
`when placing a call as to whether the call would be public or private.
`
`Digifonica’s system employed an approach fundamentally different from
`
`traditional PBX’s: it did not rely on a caller-specified classification (e.g., prefix
`
`digit) to distinguish private calls from PSTN calls. Digifonica’s system provided
`
`flexible, user-specific dialing features and could decouple the type of number
`
`being called from the manner in which the call would be handled. For example,
`
`even if a public PSTN number was dialed, Digifonica’s system could determine
`
`that the call should be routed to a private network, thus allowing the advantages of
`
`private network calling even when callers were unaware that the call recipient
`
`(“callee”) was a Digifonica system subscriber.
`
`Petitioner represents that the claims would have been obvious over a
`
`combination of Chu ‘684 with Chu ‘366 or Chen. The cited references describe
`
`traditional PBX systems and PSTN number reformatting. Petitioner’s proffered
`
`obviousness construction is unsupported by the teachings of the references. A fair
`
`reading of the combination of Chu ‘684 with either Chu ‘366 or Chen would lead
`
`to routing calls to a public or private network based solely on the caller’s dialed
`
`number, which is distinct from classifying calls in the manner recited in the claims.
`
`Petitioner’s attempt to combine Chu ‘684 with Chu ‘366 or Chen distorts the
`
`operation of Chu ‘684’s system. These distortions are evident when one looks at
`
`-2-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`the shifting explanations of Petitioner’s Declarant in describing the proposed
`
`combinations during deposition. These distortions also undermine the ability of
`
`the combined system to accurately function for its intended purpose, i.e., call
`
`routing.
`
`Therefore, Petitioner’s arguments fail to carry its burden of proving that
`
`Claims 1, 7, 27, 28, 34, 54, 72, 73, 74, 92, 93 and 111 of the ’815 Patent would
`
`have been obvious. 35 U.S.C. § 316(e). Petitioner fails to meet its burden for at
`
`least the following reasons:
`
`1.
`
`Patent Owner submits herewith detailed evidence that the
`
`invention claimed in the ‘815 Patent was actually reduced to practice
`
`at least as early as June 6, 2005, prior to the filing dates of both Chu
`
`‘366 and Chen, thus neither reference constitutes prior art under pre-
`
`AIA 35 U.S.C. § 102(e).
`
`2.
`
`The proposed combinations fail to provide all claim
`
`elements, and thus fail to establish a prima facie obviousness case.
`
`3.
`
`The Petition
`
`is
`
`premised
`
`on
`
`a
`
`fundamental
`
`misunderstanding of Chu ‘684, which, once properly understood,
`
`undermines Petitioner’s proposed combinations.
`
`-3-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`For any one of the foregoing deficiencies, the Board should confirm the non-
`
`obviousness of Claims 1, 7, 27, 28, 34, 54, 72, 73, 74, 92, 93, and 111 of the ’815
`
`Patent.
`
`II. ARGUMENT
`
`
`A. CHU ’366 IS NOT PRIOR ART UNDER PRE-AIA 35 U.S.C. 102(e)
`
`In Ground 1, Petitioner asserts that “U.S. Patent No. 8,036,366 to Chu (“Chu
`
`’366”) was filed on Aug. 4, 2006 and therefore qualifies as prior art with regard to
`
`the ’815 Patent under 35 U.S.C. §102(e).” Petition at 12. However, pre-AIA 35
`
`U.S.C. §102(e) establishes that a reference is prior art if it is “filed in the United
`
`States before the invention by the applicant” and Chu ’366 was not filed before the
`
`invention by the inventors of the ’815 Patent.
`
`Prior invention can be established by an actual reduction to practice before
`
`the priority date. Eaton v. Evans, 204 F.3d 1094, 1097 (Fed. Cir. 2000). The
`
`inventors of the ’815 Patent reduced the claimed subject matter to practice well
`
`before Chu ’366’s filing date of August 4, 2006 and in fact had a system in
`
`operation that practiced the claims of the ’815 Patent by at least as early as June 6,
`
`2005. Evidence submitted with this response and discussed below includes
`
`computer source code, an outside technical review, reports, design documents and
`
`emails, as well as expert, inventor and employee testimony. This evidence
`
`-4-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`establishes that before the filing date of Chu ’366 the inventors of the ’815 had
`
`reduced to practice the inventions of the challenged claims.
`
`1.
`
`Digifonica’s RBR Software
`
`The ’815 Patent inventors started the company Digifonica in 2004 and
`
`developed a system that allowed calls to be placed between two IP phones and
`
`between an IP phone and traditional phones on the public switched telephone
`
`network (PSTN). Ex. 2018 at ¶3. Ex. 2012 at ¶3. Ex. 2013 at ¶2. The system
`
`developed by
`
`the
`
`inventors utilized multiple geographically distributed
`
`“supernodes” that would handle routing and billing functions for a set of IP
`
`phones. By June 2005 Digifonica had deployed two supernodes, one in London,
`
`UK and one in Vancouver, Canada. Ex. 2018 at ¶3. Ex. 2012 at ¶3. Ex. 2013 at
`
`¶2.
`
`One of the key components of the Digifonica supernodes was referred to as
`
`“RBR”, which was a software and hardware platform that received information
`
`related to the initiation of a call and responded with call routing messages. Ex.
`
`2012 at ¶4. Ex. 2013 at ¶9. Ex. 2018 at ¶5.
`
`
`
`The Digifonica source code, including the RBR source code, was maintained
`
`in a source code control system known as “Subversion”, which maintains the
`
`complete history of all changes to the RBR source code. Ex. 2012 at ¶4. Ex. 2010
`
`at ¶10. Mr. Pentti Huttunen, a former employee of Digifonica retained a portable
`
`-5-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`hard drive that contained the Digifonica Subversion repository. Ex. 2010 at ¶¶7-
`
`10. The Subversion repository was archived by Mr. Huttunen and it has remained
`
`in his possession unmodified. Id. at ¶11. Mr. Huttunen’s disk drive was delivered
`
`to Mr. Ryan Purita, who analyzed the “svn.tar” file and computed electronic
`
`signatures for that file. Ex. 2011 at ¶4. Dr. Mangione-Smith was provided with
`
`the “svn.tar” file and has verified it conforms to the signatures provided by Mr.
`
`Purita, ensuring that it is identical to the file that was safeguarded by Mr. Huttunen
`
`and analyzed by Mr. Purita. Ex. 2016 at ¶20.
`
`
`
`The Subversion source code repository contains the history of the files that
`
`make up the RBR software development including all versions and the changes
`
`that were made with each version. Id. The Subversion logs identify a version of
`
`the RBR software, Version 361, that was last modified on June 6, 2005 at
`
`09:22:59AM. Ex. 2016 at ¶21. Dr. Mangione-Smith generated a log file for the
`
`RBR software that includes the history of versions for the period up through
`
`November 2006 (Ex. 2015). Ex. 2016 at ¶23. Dr. Mangione-Smith has generated a
`
`printout of Version 361 of the RBR software (Ex. 2014), has analyzed Version 361
`
`of the RBR software, and has compared it to the challenged claims of the ’815.
`
`Ex. 2016 at pages 12-42.
`
`The RBR software implemented a call routing controller, which corresponds
`
`to the Routing Controller 16 illustrated in Fig. 1 of the ’815 Patent and recited in
`
`-6-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`the challenged claims. Ex. 2013 at ¶12. Ex. 2012 at ¶16. Ex. 2016 at ¶24. The
`
`RBR software was implemented using a set of scripts in the programming
`
`language PHP, and the functionality that implements the features recited in the
`
`claims of the ’815 patent can be found in four PHP files that ran on the RBR
`
`server: invite.php, call_routes.class.php, call_ttl.class.php and call_e164.class.php.
`
`Ex. 2016 at ¶22.
`
`The table below illustrates how the Digifonica system running Version 361
`
`of the RBR source code practices the challenged claims of the ’815 Patent.
`
`RBR Source Code Version 361
`
`The RBR server implements a call routing controller.
`Callers and callees, which may be internet (IP) phones
`or endpoints on the PSTN, are associated with nodes.
`Within a Digifonica supernode, the RBR server
`facilitates communication by responding to requests
`from the B2BUA server and providing routing
`messages back to the B2BUA server. Ex. 2016 at 13.1
`
`
`
`Patent 8,542,815
`
`1. [1p] A process for
`operating a call routing
`controller to facilitate
`communication between
`callers and callees in a
`system comprising a
`plurality of nodes with
`which callers and callees
`are associated, the
`process comprising:
`
`[1a] in response to
`initiation of a call by a
`calling subscriber,
`receiving a caller
`identifier and a callee
`
`1 References to Ex. 2016 throughout the claim chart refer to the page number in
`
`In response to a SIP INVITE message from an IP
`phone, the B2BUA server sends a USER_INVITE
`message to the RBR server. Ex. 2016 at 13-14.
`
`The inviteClient() function is the entry point for the
`
`Ex. 2016 and not the paragraph number.
`
`-7-
`
`
`
`RBR software that receives this message. The
`inviteClient function receives five parameters in an
`XML_RPC_Message (Ex. 2014 at 42, “invite.php” line
`27):
` This function is called by the XML-RPC
`Server expecting type (integer
` * like 4 is THIRD_PARTY_INVITE)
`,username,callee,caller,callid (In that
` * order in the XML_RPC_Message)
`
` *
`
` A
`
` type value of 2 represents a “USER_INVITE”
`message (Ex. 2014 at 42, “invite.php” line 35):
`
`$type_arr[2] = 'USER_INVITE';
`
`Besides the type parameters, the USER_INVITE
`message contains four other parameters identified as
`“username”, “callee”, “caller” and “called” (Ex. 2014
`at 42, “invite.php” lines 44-47):
`
`$username = $params->getParam(1)-
`>scalarval();
`$callee = $params->getParam(2)-
`>scalarval();
`$caller = $params->getParam(3)-
`>scalarval();
`$callid = $params->getParam(4)-
`>scalarval();
`
`The “caller” variable corresponds to the caller identifier
`and the “callee” parameter corresponds to the callee
`identifier.
`
`
`-8-
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`identifier;
`
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1b] locating a caller
`dialing profile
`comprising a username
`associated with the caller
`and a plurality of calling
`attributes associated with
`the caller;
`
`
`
`The RBR server loads a calling profile using the
`“caller” parameter. Ex. 2016 at 14-17.
`
`The inviteClient() function first constructs a new
`call_routes() object (Ex. 2014 at 43, “invite.php” line
`60):
`
`$call = new
`call_routes($caller,$caller_domain,$callee,
`$callee_domain,$type,$forced_cid);
`
`The constructor for call_routes() is defined at lines 59-
`74 of call_routes.class.php (Ex. 2014 at 19):
`
`/**
` * Constructor... the class must be called
`with the defined parameters. Callee domain
`is optional and the class will try to guess
`it.
` * Special is a flag (THIRD_PARTY_INVITE)
`when set, the caller is not set and
`concidered a incoming PSTN call.
` *
` * @param String $caller
` * @param String $domain
` * @param String $callee
` * @param String $callee_domain
` * @param String $special
` * @return call_routes
` */
`function
`call_routes($caller,$domain,$callee,$callee
`_domain='',$special='') {
` $this->special_request = $special;
` $this-
`>call_ttl($caller,$domain,$callee,$callee_d
`omain);
` $this->genereate_routes();
`}
`
`The call_routes() constructor calls the call_ttl()
`function (Ex. 2014 at 19, “call_routes.class.php” line
`72):
`
`-9-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`
`$this-
`>call_ttl($caller,$domain,$callee,$callee_d
`omain);
`
`The call_ttl() constructor is defined at lines 131-153 of
`call_ttl.class.php (Ex. 2014 at 27):
`
`/**
` * Class constructor must be initiated with
`at least caller, domain (callee_domain and
`special flag are optional.)<br>
` * Once it is initiated, it will
`automatically execute proper functions and
`do its due diligence, to create TTL.
` * $this->ttl is where you can get the
`Total time to live for this call. can be
`accessed byt extending classes and <br>
` * through the function get_ttl().
` *
` * @param string $caller
` * @param string $domain
` * @param string $callee
` * @param string $callee_domain
` * @param string $special
` * @return call_ttl
` */
`function
`call_ttl($caller,$domain,$callee,$callee_do
`main='',$special='') {
` if(!$callee_domain){
` //try to guess
` if($temp_domain = $this-
`>guess_user_domain($callee)) $this-
`>callee_domain=$temp_domain;
` }
` $this-
`>set_caller_data($caller,$domain,$special);
`
` $this->set_callee($callee,$this-
`>callee_domain);
` $this->generate_ttl();
`}
`
`The call_ttl() function calls the set_caller_data()
`
`-10-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`function (Ex. 2014 at 27, “call_ttl.class.php” line 149):
`
`$this-
`>set_caller_data($caller,$domain,$special);
`
`The set_caller_data() function is defined at lines 187-
`189 of call_ttl.class.php and calls the set_caller()
`function (Ex. 2014 at 28, “call_ttl.class.php” line 188):
`
`$this->set_caller($caller,$domain);
`
`The set_caller() function is defined at lines 325-340 of
`call_e164.class.php (Ex. 2014 at 7):
`
`/**
` * Takes care of sequence of execution to
`create a caller profile
` *
` * @param String $caller
` * @param String $domain
` */
`public function
`set_caller($caller,$domain){
`
` $this->caller = $caller;
`
` if(! ($this->special_request ==
`'THIRD_PARTY_INVITE')){
` $this->caller_domain = $domain;
` $this->create_caller_profile();
` }
` $this->caller_is_set = true;
`}
`
`The set_caller() function calls the
`create_caller_profile() function (Ex. 2014 at 7,
`“call_e164.class.php” line 337):
`
`$this->create_caller_profile();
`
`The create_caller_profile() function is defined at lines
`342-391 of call_e164.class.php (Ex. 2014 at 7-8) (lines
`342-346 shown):
`
`-11-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1c] determining a match
`when at least one of said
`calling attributes matches
`at least a portion of said
`callee identifier;
`
`
`
`
`/**
` * All aspects of the caller Flags and data
`needed to identify a caller is set here.
`including overlapping numbers.
` *
` */
`private function create_caller_profile(){
`
`The create_caller_profile() function queries an SQL
`database to load a caller profile (Ex. 2014 at 7,
`“call_e164.class.php” line 348):
`
`$user_data = mysql_fetch_array($this-
`>sql_query("SELECT * FROM
`subscriber_dialing_profile WHERE
`username='$this->caller' and domain=
`'$this->caller_domain'"));
`
`The data returned from the SQL query include the
`caller’s idd (international direct dial digits), ndd
`(national direct dial digits) and area code (Ex. 2014 at
`7, “call_e164.class.php” lines 350-356):
`
`$this->caller_idd = $user_data['idd'];
`$this->caller_ndd = $user_data['ndd'];
`$this->caller_areacode =
`$user_data['area_code'];
`$this->caller_countrycode =
`$user_data['country_code'];
`$temp =
`explode(",",$user_data['local_length']);
`$this->caller_min_local_length = $temp[0];
`$this->caller_max_local_length = $temp[1];
`
`The RBR server matches attributes in the caller profile
`values against the callee identifier. Ex. 2016 at 17-19.
`
`The call_ttl() constructor, after calling the
`set_caller_data() function calls the set_callee() function
`(Ex. 2014 at 27, “call_ttl.class.php” line 151):
`
`$this->set_callee($callee,$this-
`
`-12-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`>callee_domain);
`
`The set_callee() function is defined at lines 393-418 of
`call_e164.class.php (Ex. 2014 at 8-9) (lines 393-399
`shown):
`
`/**
` * Takes care of the sequence and logic
`needed to create a callee
` *
` * @param String $callee
` * @param String $callee_domain
` */
`public function
`set_callee($callee,$callee_domain=''){
`
`The set_callee() function calls the
`create_callee_profile() function (Ex. 2014 at 8,
`“call_e164.class.php” line 407):
`
`$this->create_callee_profile();
`
`The create_callee_profile() function is defined at lines
`450-539 of call_e164.class.php (Ex. 2014 at 9-11)
`(lines 450-454 shown):
`
`/**
` * Creates a callee profile, all aspects of
`the callee is set here including the e164
`number is also set here. NOTE: the e164
`number can change when call forwarding
`occures.
` *
` */
`private function create_callee_profile(){
`
`The create_callee_profile() function matches values
`that were previously retrieved as part of the caller
`profile with the callee identifier. For example, a check
`is made to see if the callee identifier begins with the
`international dialing digits (idd) (Ex. 2014 at 9-10,
`“call_e164.class.php” lines 467-476):
`
`-13-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1d] classifying the call
`as a public network call
`when said match meets
`public network
`classification criteria and
`classifying the call as a
`private network call
`when said match meets
`private network
`classification criteria;
`
`
`
`case (isset($this->caller_idd) &&
`preg_match("/^".$this-
`>caller_idd."/",$this->callee)):
`$idd_length = strlen($this->caller_idd);
`$this->set_ml_id($idd_length);
`if($this->callee_data['ml_id']){ //callee
`was found and set
`$this->callee_type = 1;
`$this->check_callee_length($idd_length);
`$this->set_e164_formed_number(substr($this-
`>callee,$idd_length));
`}else{
` throw new Exception(4);
`}
`
`Further, create_callee_profile() checks for matching
`national dialing digits (Ex. 2014 at 10,
`“call_e164.class.php” lines 479-494), checks for
`matching area codes (Ex. 2014 at 10,
`“call_e164.class.php” lines 495-501), checks for a
`matching local number (Ex. 2014 at 10-11,
`“call_e164.class.php” lines 506-513), and checks for a
`network number (Ex. 2014 at 11, “call_e164.class.php”
`lines 520-527).
`
`The RBR server classifies the call as a public network
`call or a private network call. Ex. 2016 at 19-21.
`
`The create_callee_profile() function classifies the call
`by setting the callee_type variable to a value from 1 to
`7. In the case of a public classification, the callee_type
`variable is set to one of the values 1, 2, 3 or 6 (Ex. 2014
`at 10, “call_e164.class.php” lines 471, 483, 485, 497
`and 510)”
`
`$this->callee_type = 1;
`$this->callee_type = 6;
`$this->callee_type = 2;
`$this->callee_type = 3;
`$this->callee_type = 3;
`
`
`-14-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`In the case of a private classification, the callee_type
`variable is set to one of the values 4 or 7 (Ex. 2014 at
`11, “call_e164.class.php” lines 523 and 525
`respectively):
`
`$this->callee_type = 4;
`$this->callee_type = 7;
`
`The callee_type variable is set to a value of 5 in the
`case of a failure to classify the call (Ex. 2014 at 11,
`“call_e164.class.php” line 529):
`
`$this->callee_type = 5; //fail
`
`The set_callee() function calls the check_for_did()
`function. The check_for_did() function is defined at
`lines 420-441 of call_e164.class.php (Ex. 2014 at 9):
`
`/**
` * Checks if the number being called is a
`mapped DID in our system, if it is we rout
`it internally
` *
` * @param String $user
` * @return Boolean or
`DidMap(DigifonicaNumber#Domain)
` */
`protected function check_for_did($user=''){
`
`$num = $user?$user:$this->callee;
`
`$did_check = @mysql_fetch_array($this-
`>sql_query("SELECT * FROM did_bank WHERE
`did='$num'"));
`
`if($did_check[0]){
`
`
`try{
`
`
`
`if($did_check['mapped_to']
`and $did_check['domain']){
`
`
`
`
`return
`$did_check['mapped_to']."#".$did_check['dom
`ain'];
`
`
`
`}else{
`
`
`
`
`throw new Exception(8);
`
`
`
`}
`
`
`}catch (Exception $e){
`
`
`
`$this-
`
`-15-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1e] when the call is
`classified as a private
`network call, producing a
`private network routing
`message for receipt by a
`call controller, said
`private network routing
`message identifying an
`address, on the private
`network, associated with
`the callee;
`
`>e164_exception_handler($e->getMessage());
`
`
`}
`
`}
`
`return false;
`}
`
`The check_for_did() function queries an SQL database
`to determine if the reformatted callee number is
`contained in the “did_bank” table. This check
`determines if the callee is mapped to a Digifonica
`subscriber account. In the case that the check_for_did()
`function returns a value, the set_callee() function will
`make a call to itself at line 415 of call_e164.class.php
`(Ex. 2014 at 8). This will cause a second call to the
`create_callee_profile() function, which will cause the
`callee_type to be changed to 4 or 7 depending on
`whether the destination is associated with the same
`supernode or a different supernode as the caller.
`
`The RBR server produces a private network routing
`message in the case of a private network call
`classification. Ex. 2016 at 21-22.
`
`The call_routes() constructor, after calling the call_ttl()
`function calls the genereate_routes() function (Ex. 2014
`at 19, “call_routes.class.php” line 73):
`
`$this->genereate_routes();
`
`The genereate_routes() function is defined at lines 91-
`148 of call_routes.class.php (Ex. 2014 at 19-21) (lines
`91-95 shown):
`
`/**
` * Generates the routes and the SIP
`messages including VM data.
` *
` */
`protected function genereate_routes(){
`
`The genereate_routes() function tests the value of
`
`-16-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`[1f] when the call is
`classified as a public
`network call, producing a
`public network routing
`message for receipt by
`the call controller, said
`public network routing
`message identifying a
`gateway to the public
`network.
`
`
`callee_type and in the case of 4 and 7 sets the routes[]
`array (Ex. 2014 at 20, “call_routes.class.php” line
`146):
`
`/**
` * Generates the routes and the SIP
`messages including VM data.
` *
` */
`protected function genereate_routes(){
`
`The routes[] array is returned to the inviteClient()
`function and stored into a “$response” variable (Ex.
`2014 at 43, “invite.php” line 62):
`
`$response = $call->get_routes();
`
`The inviteClient() function returns the $response
`variable to the B2BUA server over the XML_RPC
`connection (Ex. 2014 at 43, “invite.php, line 70):
`
`return new XML_RPC_Response(new
`XML_RPC_Value($response, "string"));
`
`The RBR server produces such a public network
`routing message in the case of a public network call
`classification. Ex. 2016 at 22-23.
`
`The genereate_routes() function tests the value of
`callee_type and in the case of 1, 2, 3 or 6 queries an
`SQL database to get ‘supplier’ addresses (Ex. 2014 at
`19, “call_routes.class.php” line 99):
`
`$routes_q = $this->sql_query("SELECT * FROM
`suppliers WHERE ml_id=".$this-
`>callee_data['ml_id']." ORDER BY sup_price
`ASC");
`
`The genereate_routes() function then processes the
`results from the SQL query and builds a routes[] array
`(Ex. 2014 at 20, “call_routes.class.php” line 133):
`
`-17-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`7. The process of claim 1
`further comprising
`formatting said callee
`identifier into a pre-
`defined digit format to
`produce a re-formatted
`callee identifier.
`
`
`
`$this->routes[] = $c."h323-ivr-in =
`'Routing:".$my_routes_info[$curr_route]['pr
`epend'].$my_routes_info[$curr_route]['ndd_i
`dd_replacement'].$this-
`>e164_formed_nubmer."@".$curr_route.$my_rou
`tes_info[$curr_route]['port'].";credit-
`time=$this-
`>ttl".$my_routes_info[$curr_route]['auth'].
`$my_routes_info[$curr_route]['expires'].";c
`li=".$caller_id."'";
`
`The routes[] array is returned to the inviteClient()
`function and stored into a “$response” variable (Ex.
`2014 at 43, “invite.php” line 62):
`
`$response = $call->get_routes();
`
`The inviteClient() function returns the $response
`variable to the B2BUA server over the XML_RPC
`connection (Ex. 2014 at 43, “invite.php” line 70):
`
`return new XML_RPC_Response(new
`XML_RPC_Value($response, "string"));
`
`
`The RBR server formats the callee identifier into an
`E.164 compliant number. Ex. 2016 at 23.
`
`The create_callee_profile() function calls the function
`set_e164_formed_number() to format and store a callee
`identifier (Ex. 2014 at 10-11, “call_e164.class.php”
`lines 473, 490, 500 and 513):
`
`$this->set_e164_formed_number(substr($this-
`>callee,$idd_length));
`$this->set_e164_formed_number($this-
`>callee);
`$this->set_e164_formed_number($this-
`>caller_countrycode.$this->callee);
`$this->set_e164_formed_number($this-
`>caller_countrycode.$this-
`
`-18-
`
`
`
`IPR2016-01201
`Apple Inc. v. Voip-Pal
`
`27. [27p] A non-
`transitory computer
`readable medium
`encoded with codes for
`directing a processor to
`execute a method of
`operating a call routing
`controller to facilitate
`communication between
`callers and callees in a
`system comprising a
`plurality of nodes with
`which callers and callees
`are associated, the
`method comprising:
`
`[27a] in response to
`initiation of a call by a
`calling subscr