throbber
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.
`
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket