This is a suggestion based on the fact that although Google Voice passes through caller ID numbers on incoming calls, they do not pass caller ID names (real Caller ID name lookups from the phone company cost money).
I suggest that this could be mitigated somewhat by giving the option to make a HTTP (web) call to an external name lookup source. My suggestion is that you have a pair of substitution variables called %receivednumber%, which would be the full number string received from Google Voice including the +1, and just %number% which would be the last ten digits of the received Caller ID number. Either of these variables could then be used in a http string to make an inquiry on a callerID lookup source. Alternately, maybe you could use a more complex syntax like %number[,startpostion][,length]% (where startposition and length would be optional parameters. and positive numbers would count from the start of the string while negative would count from the end. So %number,,-10% would give the last ten digits of the received number).
You'd then need five new fields:
Make request if received number begins with: [+1]
CallerID name lookup request (must start with http:// and use one of the substitution variables)
Search string at start of result
String at end of result
Truncate result to [15] characters
In the first field, you can specify that the lookup should only be done if the original number received starts with a particular string, such as +1. This is useful because Google Voice can send things like "anonymous" if the caller used *67, and obviously that can't be looked up, and most USA-based sources can't handle "foreign" numbers either.
In the second field you'd put your http call, using the %receivednumber% or %number% substitution variable in the proper place.
In the third field you'd place the unique text that comes just before the desired result on the returned page. This might be a HTML tag or some other text.
In the fourth field you'd place the character or text that signals the end of the result on the returned page (often you would be able to use just a "<" character here, to denote the start of a HTML tag).
In the fifth field you'd be able to specify whether you wanted the result truncated to a particular number of characters - the default would be 15 which is what I believe most phones will display.
When a Google Voice call comes in and the caller ID number starts with the specified characters, if any are specified, it would make the HTTP call to your lookup source (which could be a local source you provide on a server at your location, or some service on the Internet). It would then parse the returned page by looking for the text that falls between the specified text delimiters in the third and fourth fields, if any delimiters are specified. It would truncate the result to the number of characters in the fifth field and send that on to the phone (in the Caller ID name field).
Only other consideration is you might need to somehow limit the size of the returned result so it doesn't overflow the device's memory (in case you somehow wind up requesting a video download instead of a Caller ID lookup).
Once this feature was available, users could perhaps post "recipes" for using favorite lookup sources. This would be similar to what's done in the "
Caller ID Superfecta" module that's used with FreePBX, but it would only allow one lookup source (so as to avoid memory issues).
There might be other ways to address this, but that would be my suggestion.