`
`
`Filed on behalf of:
`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.
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`VOIP-PAL.COM, INC.,
`
`Patent Owner
`
`
`
`
`Case No. IPR2016-01198
`U.S. Patent 9,179,005
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`PATENT OWNER RESPONSE TO PETITION
`
`
`
`AT&T, Exh. 1010, p. 1
`
`
`
`TABLE OF CONTENTS
`
`Page No.
`
`I.
`
`INTRODUCTION ........................................................................................... 1
`
`II. ARGUMENT ................................................................................................... 4
`
`A.
`
`CHU ‘366 IS NOT PRIOR ART UNDER PRE-AIA 35
`U.S.C. 102(e) ......................................................................................... 4
`
`1.
`
`2.
`
`3.
`
`4.
`
`Digifonica’s RBR Software ........................................................ 5
`
`Digifonica Release of RBR Version 361 .................................. 41
`
`The Smart 421 Engagement ...................................................... 42
`
`Inventor and Employee Testimony ........................................... 45
`
`B.
`
`C.
`
`CHEN IS NOT PRIOR ART UNDER PRE-AIA 35
`U.S.C. 102(e) ....................................................................................... 47
`
`PETITIONER FURTHER FAILS TO ESTABLISH
`THAT THE CHALLENGED CLAIMS ARE OBVIOUS ................. 48
`
`1.
`
`2.
`
`Claimed Subject Matter ............................................................ 49
`
`Overview Of Cited Art .............................................................. 50
`
`a.
`
`b.
`
`c.
`
`Overview of Chu ’684 .................................................... 50
`
`Overview of Chu ’366 .................................................... 52
`
`Overview of Chen ........................................................... 53
`
`D.
`
`PETITIONER’S COMBINATIONS FAIL TO
`PROVIDE “PRODUCING...” WHEN AN
`“ATTRIBUTE” AND A “CALLEE IDENTIFIER”
`MEET “NETWORK CRITERIA” ...................................................... 55
`
`1.
`
`The proposed combinations fail to provide at least
`one element in each claim ......................................................... 55
`
`-i-
`
`AT&T, Exh. 1010, p. 2
`
`
`
`TABLE OF CONTENTS
`(cont’d)
`
`Page No.
`
`2.
`
`A PHOSITA would not follow the order of steps
`set forth in the Petition to combine the teachings of
`the references. ........................................................................... 59
`
`E.
`
`PETITIONER’S PROPOSED COMBINATIONS FAIL
`TO LOCATE ATTRIBUTES ASSOCIATED WITH
`THE CALLER ..................................................................................... 66
`
`1.
`
`2.
`
`The Petition fundamentally misinterpreted the dial
`plans of Chu ‘684 as being user-specific instead of
`enterprise-specific ..................................................................... 66
`
`Chu ‘684’s “dial plan” is enterprise-specific, not
`user-specific, which undercuts Petitioner’s
`obviousness theories ................................................................. 67
`
`a.
`
`b.
`
`Consulting an enterprise “dial plan” in Chu ‘684 is
`distinct from locating a “caller dialing profile” ............. 67
`
`Chu ‘684’s enterprise “dial plan” cannot be
`combined with individualized profiles ........................... 68
`
`F.
`
`PETITIONER FAILS TO ARTICULATE A PROPER
`REASON TO COMBINE AND OVERLOOKS WHY
`THE COMBINATIONS ARE UNDESIRABLE ............................... 69
`
`1.
`
`2.
`
`No articulated reasoning for reason to combine ....................... 69
`
`No reason to reformat numbers in Chu ‘684 ............................ 71
`
`III. CONCLUSION .............................................................................................. 71
`
`
`
`
`
`
`-ii-
`
`AT&T, Exh. 1010, p. 3
`
`
`
`TABLE OF AUTHORITIES
`
`Page No(s).
`
`Eaton v. Evans,
`204 F.3d 1094 (Fed. Cir. 2000) ...................................................................... 4, 48
`
`In re Gordon,
`733 F.2d 900 (Fed. Cir. 1984) ............................................................................ 59
`
`KSR Int’l. Co. v. Teleflex, Inc.,
`550 U.S. 398 (2007) ............................................................................................ 69
`
`In re NuVasive, Inc.
`842 F.3d 1376 ..................................................................................................... 70
`
`OTHER AUTHORITIES
`
`35 U.S.C. § 102 .......................................................................................... 3, 4, 47, 48
`
`35 U.S.C. § 316 .......................................................................................................... 3
`
`
`
`
`
`-iii-
`
`AT&T, Exh. 1010, p. 4
`
`
`
`IPR2016-01198
`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. 9,179,005 (the ‘005
`
`Patent) (Paper 1) by Apple Inc. (“Apple”).
`
`I. INTRODUCTION
`
`Digifonica, a real party-in-interest to this proceeding and wholly owned
`
`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 ‘005 Patent.
`
`Prior to the ‘005 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-
`
`AT&T, Exh. 1010, p. 5
`
`
`
`IPR2016-01198
`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-
`
`AT&T, Exh. 1010, p. 6
`
`
`
`IPR2016-01198
`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, 24-26, 49-50, 73-79, 83-84, 88-89, 92, 94-96, 98, and 99 of the ‘005
`
`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 ‘005 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-
`
`AT&T, Exh. 1010, p. 7
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`For any one of the foregoing deficiencies, the Board should confirm the non-
`
`obviousness of Claims 1, 24-26, 49-50, 73-79, 83-84, 88-89, 92, 94-96, 98, and 99
`
`of the ’005 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 ’005 Patent under 35 U.S.C. §102(e).” Petition at 10. 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 ‘005 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 ‘005 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 ‘005 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-
`
`AT&T, Exh. 1010, p. 8
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`establishes that before the filing date of Chu ‘366 the inventors of the ‘005 had
`
`reduced to practice the inventions of the challenged claims.
`
`Digifonica’s RBR Software
`
`1.
`The ‘005 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-
`
`AT&T, Exh. 1010, p. 9
`
`
`
`IPR2016-01198
`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 ‘005.
`
`Ex. 2016 at pages 12-57.
`
`The RBR software implemented a call routing controller, which corresponds
`
`to the Routing Controller 16 illustrated in Fig. 1 of the ‘005 Patent and recited in
`
`-6-
`
`AT&T, Exh. 1010, p. 10
`
`
`
`IPR2016-01198
`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 ‘005 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 ‘005 Patent. Note
`
`the Table below numbers claim elements differently than the Petition in order to
`
`more clearly demonstrate how Version 361 meets all claim elements.
`
`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 12-13.1
`
`
`
`Patent 9,179,005
`
`1. [1p] A process for
`producing a routing
`message for routing
`communications
`between a caller and a
`callee in a
`communication
`system, the process
`comprising:
`
`In response to a SIP INVITE message from an IP phone,
`[1a] using a caller
`
`1 References to Ex. 2016 throughout the claim chart refer to the page number in
`
`Ex. 2016 and not the paragraph number.
`
`-7-
`
`AT&T, Exh. 1010, p. 11
`
`
`
`the B2BUA server sends a USER_INVITE message to the
`RBR server, which then loads a calling profile using the
`“caller” parameter. Ex. 2016 at 13-17.
`
`The inviteClient() function is the entry point for the 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.
`
`The inviteClient() function first constructs a new
`call_routes() object (Ex. 2014 at 43, “invite.php” line 60):
`
`-8-
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`identifier associated
`with the caller to
`locate a caller dialing
`profile comprising a
`plurality of calling
`attributes associated
`with the caller;
`
`
`AT&T, Exh. 1010, p. 12
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`
`$call = new
`call_routes($caller,$caller_domain,$callee,$c
`allee_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_d
`omain='',$special='') {
` $this->special_request = $special;
` $this-
`>call_ttl($caller,$domain,$callee,$callee_dom
`ain);
` $this->genereate_routes();
`}
`
`The call_routes() constructor calls the call_ttl() function
`(Ex. 2014 at 19, “call_routes.class.php” line 72):
`
`$this-
`>call_ttl($caller,$domain,$callee,$callee_dom
`ain);
`
`The call_ttl() constructor is defined at lines 131-153 of
`call_ttl.class.php (Ex. 2014 at 27):
`
`/**
`
`-9-
`
`AT&T, Exh. 1010, p. 13
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
` * 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_doma
`in='',$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() 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):
`
`
`-10-
`
`AT&T, Exh. 1010, p. 14
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`$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):
`
`/**
` * 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,
`
`-11-
`
`AT&T, Exh. 1010, p. 15
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`[1b] when at least one
`of said calling
`attributes and at least
`a portion of a callee
`identifier associated
`with the callee meet
`private network
`classification criteria,
`
`
`
`“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. The RBR server
`classifies the call as a public network call or a private
`network call. Ex. 2016 at 17-20.
`
`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-
`>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
`
`-12-
`
`AT&T, Exh. 1010, p. 16
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`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):
`
`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);
`
`-13-
`
`AT&T, Exh. 1010, p. 17
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`$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 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 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 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'"));
`
`-14-
`
`AT&T, Exh. 1010, p. 18
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`[1c] 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; and
`
`
`if($did_check[0]){
`
`
`try{
`
`
`
`if($did_check['mapped_to'] and
`
`$did_check['domain']){
`
`
`
`
`return
`$did_check['mapped_to']."#".$did_check['domai
`n'];
`
`
`
`}else{
`
`
`
`
`throw new Exception(8);
`
`
`
`}
`
`
`}catch (Exception $e){
`
`
`
`$this-
`>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. The routing message identifies an address
`associated with the destination Digifonica IP phone. Ex.
`2016 at 20-21.
`
`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();
`
`
`-15-
`
`AT&T, Exh. 1010, p. 19
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`[1d] when at least one
`of said calling
`attributes and at least
`a portion of said
`callee identifier meet
`a public network
`
`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
`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 matches attributes in the caller profile
`values against the callee identifier. The RBR server
`classifies the call as a public network call or a private
`network call. Ex. 2016 at 21-24.
`
`The call_ttl() constructor, after calling the
`
`-16-
`
`AT&T, Exh. 1010, p. 20
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`classification
`criterion,
`
`
`set_caller_data() function calls the set_callee() function
`(Ex. 2014 at 27, “call_ttl.class.php” line 151):
`
`$this->set_callee($callee,$this-
`>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
`
`-17-
`
`AT&T, Exh. 1010, p. 21
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`if the callee identifier begins with the international dialing
`digits (idd) (Ex. 2014 at 9-10, “call_e164.class.php” lines
`467-476):
`
`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 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;
`
`The set_callee() function calls the check_for_did()
`function. The check_for_did() function is defined at lines
`
`-18-
`
`AT&T, Exh. 1010, p. 22
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`[1e] producing a
`public network
`routing message for
`receipt by the call
`
`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['domai
`n'];
`
`
`
`}else{
`
`
`
`
`throw new Exception(8);
`
`
`
`}
`
`
`}catch (Exception $e){
`
`
`
`$this-
`>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 and will
`return false in the case that there is no value.
`
`The RBR server produces a public network routing
`message in the case of a public network call classification.
`The routing message identifies one or more addresses for
`PSTN gateways. Ex. 2016 at 24-25.
`
`-19-
`
`AT&T, Exh. 1010, p. 23
`
`
`
`IPR2016-01198
`Apple Inc. v. Voip-Pal
`
`controller, said public
`network routing
`