After a lot of digging around, I have discovered a bit about what I can and can't do.
Can:
Use multiple numbers per contact and sort by companies
Export 3CX contacts as a CSV to strip down to needed variables
Can't:
Use pause (,) and wait(
as 3CX does not know what to do with these, which means I can't auto-dial extensions.
Automate this in an easy way.
First, my contacts are a mess, but 3CX throws issues if ext, x, a comma, or anything else really is used in the number. I had to do a bit of cleaning so that it was a bit more presentable.
Second, I found an XML phonebook generator on Yealink's website, but it is limited to 50 groups or 1000 contacts, so I needed to many smaller batches. The tool is actually an Excel spreadsheet, but it is locked and encrypted so I can't see what it is doing exactly. The output looks good on the Yealink T48G, so I would recommend trying it. Output is similar to below.
<?xml version="1.0" encoding="UTF-8"?>
<YealinkIPPhoneBook>
<Title>Yealink</Title>
<Menu Name="Company 1">
<Unit Name="User 1" Phone1="Business#" Phone2="Mobile#" Phone3="Other#" default_photo="Resource:"/>
<Unit Name="User 2" Phone1="Business#" Phone2="Mobile#" Phone3="Other#" default_photo="Resource:"/>
</Menu>
<Menu Name="Company 3">
<Unit Name="User 1" Phone1="Business#" Phone2="Mobile#" Phone3="Other#" default_photo="Resource:"/>
<Unit Name="User 2" Phone1="Business#" Phone2="Mobile#" Phone3="Other#" default_photo="Resource:"/>
<Unit Name="User 3" Phone1="Business#" Phone2="Mobile#" Phone3="Other#" default_photo="Resource:"/>
</Menu>
</YealinkIPPhoneBook>